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字符串

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐