mybatis-plus使用条件构造器Wrapper自定义查询条件

今天写项目,想着如何联多张表查询,并且还带条件,加上分页。 于是… 当当当当当! 就是它👇

使用 Wrapper 自定义SQL。

解释:

需要mybatis-plus版本 >= 3.0.7 param 参数名要么叫ew,要么加上注解@Param(Constants.WRAPPER) 使用${ew.customSqlSegment} 不支持Wrapper 内的entity生成where语句

条件构造器关系介绍: 我们可以知道 Wrapper 是条件构造抽象类,最顶端父类

当我们需要使用使用条件构造器Wrapper自定义查询条件。

1、使用注解

/**
     * @param page
     * @param query
     * @returnzz
     */
    @Select("select f.id id,m.magazine_name magazine_name,f.frequency_end_date frequency_end_date,f.frequency_name frequency_name,count(f.id) count from ms_magazine m " +
            "left join ms_frequency f on m.id = f.magazine_id " +
            "left join ms_manuscript t on f.id = t.frequency_id " +
            "${ew.customSqlSegment} ")
    IPage<Progress> findProgress(Page<Progress> page, @Param(Constants.WRAPPER) Wrapper query);

注意:1、在sql语句的最后加上: ${ew.customSqlSegment} 2、 ** param 参数名要么叫ew 要么加上注解@Param(Constants.WRAPPER) ** 3、使用${ew.customSqlSegment} 不支持 Wrapper 内的entity生成where语句

2、使用xml

mapper方法:

List<MysqlData> getAll(Wrapper ew);

对应的xml文件中:

<select id="getAll" resultType="MysqlData">
	SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>

最后

切记一个大点!!!! wrapper的导包一定要是这个,很容易导包导错成java.sql

import com.baomidou.mybatisplus.core.conditions.Wrapper;
经验分享 程序员 微信小程序 职场和发展