美文网首页
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