mybatis-plus官网提供了分页插件,(spring-boot)应用办法如下:
//Spring boot形式@Configuration@MapperScan("com.test.*.mapper*")public class MybatisPlusConfig { // 旧版 @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置申请的页面大于最大页后操作, true调回到首页,false 持续申请 默认false // paginationInterceptor.setOverflow(false); // 设置最大单页限度数量,默认 500 条,-1 不受限制 // paginationInterceptor.setLimit(500); // 开启 count 的 join 优化,只针对局部 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } // 最新版 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2)); return interceptor; }}
如何辨别新旧版呢?其实你把这两种代码都复制到你的我的项目里,哪个类存在就用哪个办法。
注入分页插件后,如何应用呢?
mapper写法:
// 这是mapper本人提供的办法,参数是wrapper 实用于单表查 <P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);// 自定义sql,实用于多表联查IPage<UserVO> queryUserList(Page<UserVO> page, @Param("dto") ConditionDTO conditionDTO);
必须要次要的点:
1.Page为IPage的实现类,分页返回和传入Page是同一个对象
2.Page类必须放在第一位
3.第二个参数和后续参数必须加@Param,(根本类型和实体类型都须要加),否则会报找不到属性谬误。
mapper.xml:
<select id="queryUserList" resultType="com.test.vo.UserVO"> select * from auth_user where sex = #{dto.sex} and cancat_ws(':',name,phone) like concat('%',#{dto.searchKey,'%'})</select>
service调用mapper
public PageDataVO<UserVO> getUserList( ConditionDTO conditionDTO) { // 分页查问 Page<UserVO> page = new Page<>(conditionDTO.getPageNum(), conditionDTO.getPageSize()); IPage<UserVO> result = userMapper.queryUserList(page, conditionDTO); //构建本人的分页实体类 return new PageDataVO<WorkReviewVO>().build(result); }