Mybatis-plus 分页插件+多条件查询

夜梦

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);
    }
阅读 2.1k

这人吧,不努力终究还是会后悔的。

1 声望
0 粉丝
0 条评论
推荐阅读
ThreadPoolExecutor构造方法的七个参数和拒绝策略详解
其实源码中方法上的注释已经很清楚了(阅读源码注释是个很好的习惯),我们这里简单翻译下:corePoolSize: 核心线程数,即一直保留在线程池当中的线程数量,即使没有任务需要处理。maximumPoolSize: 最大线程数...

夜梦阅读 615

规则引擎深度对比,LiteFlow vs Drools!
Drools是一款老牌的java规则引擎框架,早在十几年前,我刚工作的时候,曾在一家第三方支付企业工作。在核心的支付路由层面我记得就是用Drools来做的。

铂赛东5阅读 1.4k

封面图
spring boot 文件上传和下载
学习了老师写的文件上传和下载,这里学习一下。文件上传controller层从controller层开始,接受前台传的数据。1.前台调用后台接口: {代码...} 2.controller层接收数据: {代码...} 可以看到,后台接受文件是以 Mult...

weiewiyi4阅读 504

将Bean交给Spring容器管理有几种方式?
将Bean交给Spring容器管理的几种方式Spring核心Spring核心是 IOC 和 AOP 。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。至于更详细的说明,或者去深入理解Spring这两大核...

JanYork_小简3阅读 1.4k

总结本周遇到的问题
报错如下:搜索后发现此类错误和数据库的字符集有关系之所以之前没发现此类问题是因为之前测试时只测试了保存英文字符,然而当我们存储中文字符时就会出现此类错误。

李明3阅读 351

我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)
最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring Cloud 相关版本从 Greenwich.SR1 升级为 2021.0.4。

艾小仙2阅读 516

一篇带你了解Java开发中常用的注解与作用
@Component组件,没有明确的角色。@Service在业务逻辑层使用-&gt;Service层。D@Repository在数据访问层使用-&gt;Dao层。@Controller在展现层使用,控制器的声明。

JanYork_小简1阅读 258

这人吧,不努力终究还是会后悔的。

1 声望
1 粉丝
宣传栏