Page、QueryWrapper自定义查询条件实现连表分页查询(一)
Page、QueryWrapper自定义查询条件实现连表分页查询
·
1、mapper中重写Page
Page<UserVo> getPageList(Page<UserVo> page, @Param(Constants.WRAPPER) QueryWrapper<UserVo> queryWrapper);
//QueryWrapper中使用自定义uservo类,不能使用LambdaQueryWrapper
2、xml中sql语句加自动填充查询条件
/**
* 获取自定义SQL 简化自定义XML复杂情况
* <p>使用方法</p>
* <p>`自定义sql` + ${ew.customSqlSegment}</p>
* <p>1.逻辑删除需要自己拼接条件 (之前自定义也同样)</p>
* 即需加是否删除的判断条件
* <p>2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦)</p>
* <p>3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!)</p>
* <p>4.ew是wrapper定义别名,可自行替换</p>
*/
<select id="getPageList" resultType="com.sll.vo.UserVo">
select *
from(
select u.*,c.*
from user u
inner join classroom c
on u.cid=c.id
where deleted=0) as a //上<p1>所言
${ew.customSqlSegment} //自动拼接查询条件
</select>
3、Page、QueryWrapper实现查询分页
Page<UserVo> resultPage = new Page<>(query.getPageNo(), query.getPageSize());
QueryWrapper<UserVo> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNoneBlank(query.getCname()), "cname", query.getCname());
reportManagementMapper.getPageList(resultPage, queryWrapper);
注意:
mapper方法里的@Param(Constants.WRAPPER) Wrapper query对象,Constants.WRAPPER的值就是ew。
首先判断ew.emptyOfWhere是否存在where条件,有的话再拼接上去,ew.customSqlSegment该值是WHERE + sql语句,还有个ew.sqlSegment是不包括WHERE字符串
更多推荐
已为社区贡献2条内容
所有评论(0)