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

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

使用 Wrapper 自定义SQL。

mybatis-plus官方文档解释:

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

条件构造器关系介绍:
mybatis-plus使用条件构造器Wrapper自定义查询条件_第1张图片
我们可以知道 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;

mybatis-plus使用条件构造器Wrapper自定义查询条件_第2张图片

你可能感兴趣的:(java,mybatis,sql)