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;
上一篇:
IDEA上Java项目控制台中文乱码