SpringBoot + MyBatis-Plus分页插件不生效解决办法

配置类

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

测试方法

@Test
    public void selectPage() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("age", 23);

        Page<User> page = new Page<>(1,2);
        IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
        logger.info("总页数={}", iPage.getPages());
        logger.info("总记录数={}", iPage.getTotal());
        List<User> users = iPage.getRecords();
        for (User user : users) {
            logger.info("查询内容={}", JSON.toJSONString(user));
        }
    }

查询结果 明明设置的查询数量为2,却查询出全部数据

总页数=0
总记录数=0
查询内容={"age":23,"email":"xb163.com","id":1193812778507046913,"managerId":"1193812575125258242","name":"向北"}
查询内容={"age":33,"email":"zyq163.com","id":1193817523615461378,"managerId":"1193812575125258242","name":"张雨绮"}
查询内容={"age":32,"email":"lly163.com","id":1193818710385369089,"managerId":"1193810888373317634","name":"刘红雨"}

查看执行SQL 发现并没有分页

 SELECT id,name,manager_id,email,age
 FROM user
 WHERE (age >= 23);

原来是启动类没有指定扫描包,配置类和组件类默认需要在启动类所在包或其子包下,如果不是,需要使用@ComponentScan指定,在启动类添加,我是直接扫描所有包,可以直接扫描配置类所在包

@ComponentScan("com.example.mybatis.plus.mybatisplus.*")

此时在进行测试

总页数=2
总记录数=3
查询内容={"age":23,"email":"xb163.com","id":1193812778507046913,"managerId":"1193812575125258242","name":"向北"}
查询内容={"age":33,"email":"zyq163.com","id":1193817523615461378,"managerId":"1193812575125258242","name":"张雨绮"}

此时的SQL执行的是两句
先查总数

 SELECT COUNT(1)
 FROM user
 WHERE (age >= 23);

再查记录

 SELECT id,name,manager_id,email,age
 FROM user
 WHERE (age >= 23)
 LIMIT 0,2;

你可能感兴趣的:(程序员)