共计 1612 个字符,预计需要花费 5 分钟才能阅读完成。
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);
}
正文完
发表至: mybatis-plus
2021-12-16