MyBatis-Plus 使用wrapper自定义SQL,以下是单表查询。官方文档
官方的例子:
//mapper接口
@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);
//xml
List<MysqlData> getAll(Wrapper ew);
<select id="getAll" resultType="MysqlData">
SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>
我的单表例子
//Service
/**
* 获取课程分页
* @param courseVo 课程vo
* @param page 分页对象
* @return 课程分页
*/
IPage<CourseVo> getCourseByPage(CourseVo courseVo, PageVO page);
//ServiceImpl
@Override
public IPage<CourseVo> getCourseByPage(CourseVo courseVo, PageVO page) {
QueryWrapper<Course> queryWrapper = Wrappers.query();
queryWrapper.like(CharSequenceUtil.isNotBlank(courseVo.getName()), "name", courseVo.getName());
queryWrapper.like(CharSequenceUtil.isNotBlank(courseVo.getAdaptAge()), "adapt_age", courseVo.getAdaptAge());
queryWrapper.like(CharSequenceUtil.isNotBlank(courseVo.getSeason()), "season", courseVo.getSeason());
queryWrapper.eq(CharSequenceUtil.isNotBlank(courseVo.getStatus()), "status",courseVo.getStatus());
queryWrapper.orderByDesc("create_time");
return this.baseMapper.pageByCourseVo(PageUtil.initPage(page),queryWrapper);
}
//mapper
@Select("select * from stu_course ${ew.customSqlSegment}")
IPage<CourseVo> pageByCourseVo (IPage<CourseVo> voIPage, @Param(Constants.WRAPPER) QueryWrapper<Course> queryWrapper);
SQL
总结
${ew.customSqlSegment}相当于 where + queryWrapper内的条件
注意事项
需要mybatis-plus版本 >= 3.0.7
param 参数名要么叫ew,要么加上注解@Param(Constants.WRAPPER)
使用${ew.customSqlSegment}
不支持 Wrapper
内的entity
生成where
语句