美文网首页
MyBatis-Plus分页查询

MyBatis-Plus分页查询

作者: 文景大大 | 来源:发表于2021-06-23 17:59 被阅读0次

前文概要《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(当前页起始记录),不满足条件,所以第二次数据查询就不会执行了;

相关文章

网友评论

      本文标题:MyBatis-Plus分页查询

      本文链接:https://www.haomeiwen.com/subject/guppyltx.html