时间:2021-05-19
注意:Mybatis Plus 3.0.7 版本才开始用【自定义sql】+【QueryWrapper】,低版本不能使用,还是老实写SQL进行条件拼接
1、源码分析
在Wrapper<T>接口中就有如下方法
/** * 获取自定义SQL 简化自定义XML复杂情况 * 使用方法:自定义sql + ${ew.customSqlSegment} * 1.逻辑删除需要自己拼接条件 (之前自定义也同样) * 2.不支持wrapper中附带实体的情况 (wrapper自带实体会更麻烦) * 3.用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!) * 4.ew是wrapper定义别名,可自行替换 */public abstract String getCustomSqlSegment();在AbstractWrapper抽象类中进行了实现
@Overridepublic String getCustomSqlSegment() { // MergeSegments 为 返回 合并 SQL 片段 MergeSegments expression = getExpression(); if (Objects.nonNull(expression)) { NormalSegmentList normal = expression.getNormal(); String sqlSegment = getSqlSegment(); if (StringUtils.isNotEmpty(sqlSegment)) { if (normal.isEmpty()) { return sqlSegment; } else { return concatWhere(sqlSegment); } } } return StringUtils.EMPTY;}/** * 拼接`WHERE`至SQL前 * * @param sql sql * @return 带 where 的 sql */private String concatWhere(String sql) { return Constants.WHERE + " " + sql;}2、案例讲解
2.1、dao
说明:
1、这里Dao层需要继承BaseMapper,泛型指定为查询实体;
2、@Mapper,这个无过多说明;
3、最重要的是方法形参@Param("ew") QueryWrapper<ReseEntity> queryWrapper,这里是使用mybatisplus的条件构造器(超链接进官方文档),【2.3、service】中有说明
2.2、xml
说明:
1、查询SQL写完后,不用写【WHERE】,在SQL后面加入【 ${ew.customSqlSegment}】,mybatisPlus会自动将查询添加进行拼接
2、为什么是ew:mybatisPlus 之前有EntityWrapper,在后面版本将EntityWrapper分化为了多个Wrapper,例如查询的时候,就是QueryWrapper,猜测可能之前通过ew引用地方太多,保留了使用ew
<select id="getReseList" resultMap="reseMap"> SELECT r.rese_id, r.rese_no, w.WORK_Name FROM t_s_db_rese r left join t_s_db_work w on r.WORK_id = w.WORK_id ${ew.customSqlSegment}</select>2.3、service
说明:
1、getPage(params, null, false): 方法用来拼接mybatis plus 分页组件(超链接进官方文档)
2、getWrapper(params):方法用来拼接 QueryWrapper 条件构造器(超链接进官方文档),
到此这篇关于基于Mybatis Plus实现多表分页查询的示例代码的文章就介绍到这了,更多相关Mybatis Plus多表分页查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看。Mysql多表查询:复制代码代码如下:CR
前段时间写了一篇基于mybatis实现的多数据源博客。感觉不是很好,这次打算加入git,来搭建一个基于Mybatis-Plus的多数据源项目Mybatis-Pl
本文示例可实现Destoon多表查询。在进行destoon二次开发的时候有很高的实用价值。具体实现方法如下:1.模板文件部分具体代码如下:{loop$tags$
描述项目中用到boot整合mybatis-plus,个人在使用分页条件查询的时候一直查不出total,pages,终于找到原因了.环境2.1.5.RELEASE
1、使用mybatis-plus自身的查询构造去,只需要在全局配置中添加如下配置mybatis-plus:mapper-locations:classpath: