1. MP配置类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分页
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
具体实现:
@Override
public R<Page> page(int page, int pageSize, String name) {
log.info("page = {} pageSize = {} name = {}",page,pageSize,name);
//构造分页构造器
Page pageInfo=new Page(page,pageSize);
//构造条件构造器
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
//在满足不为空的条件下再去添加
queryWrapper.like(StringUtils.isNotBlank(name), Employee::getUsername, name);
//排序
queryWrapper.orderByDesc(Employee::getUpdateTime);
//Mapper分页查询方法
employeeMapper.selectPage(pageInfo, queryWrapper);
return R.success(pageInfo);
}
1.2 分页实现原理
SQL语句中使用limit关键字来实现查询前几条或者中间某几行数据
select * from table_name limit [offset,] rows
参数说明:
offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。
rows:返回具体行数。
总结:如果limit后面是一个参数,就是检索前多少行。如果limit后面是2个参数,就是从offset+1行开始,检索rows行记录。
select * from table_name limit 10;//检索前10行记录,从0-9
select * from table_name limit 5 ,10;
//因为是第0行开始,所以如果偏移量是5,起始是从第6条记录开启,检索10行记录,即:检索记录行 6-15
客户端通过传递page(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:
比如:
查询第1条到第10条的数据的sql是:select * from table limit 0,10; 对应着就是:
select * from table limit (1-1)*10,10;
查询第10条到第20条的数据的sql是:select * from table limit 10,10; 对应着就是:
select * from table limit (2-1)*10,10;
查询第20条到第30条的数据的sql是:select * from table limit 20,10;对应着就是:
select * from table limit (3-1)*10,10;
SQL分页计算:
select * from table limit (page-1)*pageSize,pageSize;
标签:10,插件,分页,limit,MP,table,select,name
From: https://www.cnblogs.com/ggzs/p/16598689.html