配置类
@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;