MyBatis-Plus(四.Page分页查询)
在已经集成了Mybatis Plus的SpringBoot项目中加入如下分页拦截器的配置,让MybatisPlus支持分页
@Configuration public class MybatisPlusConfiguration { //配置分页拦截器 @Bean public MybatisPlusInterceptor getMybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } }
不配置分页拦截器查询的时候selectPage默认查询全部
用Page类实现分页查询
@SpringBootTest public class PageTest{ @Autowired UserMapper userMapper; // 普通分页查询 @Test public void testPage(){ Page<User> page = new Page<>(2, 3); // 第二页, 每页三行 final Page<User> page1 = userMapper.selectPage(page, null); // 后面也可以加Wrapper page.getRecords().forEach(System.out::println); // 既可以取参数的page page1.getRecords().forEach(System.out::println); // 也可以取返回的page1 // 两种方法取得分页结果 System.out.println(page.getCurrent()); // 当前页 System.out.println(page.getSize()); // 每页大小 System.out.println(page.getPages()); // 总页数 System.out.println(page.getRecords()); // 这一页的内容List集合 } // 返回值是Map的分页查询 @Test public void testMap(){ Page<Map<String, Object>> page = new Page<>(2, 3, false); // 注意Page里的泛型是Map Page<Map<String, Object>> mapPage = userMapper.selectMapsPage(page, null); System.out.println(mapPage); } }
注意这种做法的策略是先查询所有页, 然后从所有页中查询你想要的页
如果定义Page时第三个参数searchCount(是否查询所有)为false, 那么不会查询所有字段, 直接查询某一页
Page<User> page = new Page<>(2, 3, false); // 第三个参数是是否查询所有