前文概要《MyBatis-Plus使用入门》
本文主要在如上代码基础上讲述如何实现分页查询。
首先我们需要在前面的基础上增加配置类,其实就是增加拦截器,在sql执行前做一些操作。
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
}
然后就可以在Controller层开始使用了。
@GetMapping("/listUsersByPage/{pageNum}/{pageSize}")
public List<User> listUsersByPage(@PathVariable Long pageNum, @PathVariable Long pageSize) {
// 先构造一个Page对象
IPage<User> userPage = new Page<>(pageNum, pageSize);
// SELECT COUNT(*) FROM zx_user WHERE deleted = 0
// SELECT user_id,user_name,age,user_email,create_by,create_date,update_by,update_date,deleted FROM zx_user WHERE deleted=0 LIMIT ?,?
return userMapper.selectPage(userPage, null).getRecords();
}
最后一行查询时,selectPage的第二个参数其实就是queryWrapper,可以视情况构造查询参数,这个在之前入门文章中介绍过了。
需要注意的是,在执行分页查询前,MyBatis-Plus会先进行count计算数量,如果数量小于当前页要查询的内容,第二个数据查询逻辑就不会执行了。比如:
- 数据表中符合条件的记录数量为10;
- 现在要查询第1页,每页10条,第一次计数查询出来10>=1(当前页起始记录),满足条件,所以会执行第二次数据查询;
- 现在要查询第2页,每页10条,第一次计数查询出来10<11(当前页起始记录),不满足条件,所以第二次数据查询就不会执行了;
网友评论