mybatis-plus 2.x升级3.x注意点
2.0到3.0主要升级的点:升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法模块化 MP 合理的分配各个包结构重构注入方法,支持任意方法精简注入模式全局配置下划线转换消灭注入 AS 语句改造 Wrapper 更改为 QueryWrapper UpdateWrapper重构 分页插件 消灭固定分页模型,支持 Mapper 直接返回 IPage 接口新增 Res...
·
2.0到3.0主要升级的点:
- 升级 JDK 8 + 优化性能 Wrapper 支持 lambda 语法
- 模块化 MP 合理的分配各个包结构
- 重构注入方法,支持任意方法精简注入模式
- 全局配置下划线转换消灭注入 AS 语句
- 改造 Wrapper 更改为 QueryWrapper UpdateWrapper
- 重构 分页插件 消灭固定分页模型,支持 Mapper 直接返回 IPage 接口
- 新增 Rest Api 通过 Controller 层
- 实体 String 类型字段默认使用 LIKE 查询 SelectOne 默认 LIMIT 1
- 辅助支持 selectMaps 新增 bean map 互转工具类
- 增加 db2 支持 starter 改为 Spring boot 2+ 支持
- 重构生成器提供自定义 DB 多种模板引擎支持
配置项
sqlSessionFactory 配置
2.0
<!--注册SqlSessionFactory-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="shardingDataSource"/>
<property name="globalConfig" ref="globalConfig"/>
<!-- 配置 Mybatis 配置文件(可无) -->
<!--<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>-->
<!-- 自动扫描 Xml 文件位置 -->
<!--<property name="mapperLocations" value="classpath:mapper/with-sharding/*Mapper.xml" />-->
<!-- 枚举属性配置扫描,支持通配符 * 或者 ; 分割 -->
<!-- <property name="typeEnumsPackage" value="com.wlqq.insurance.conf.*.enums"/> -->
<property name="plugins">
<array>
<!-- 分页插件配置 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
<!-- 乐观锁插件 -->
<bean id="optimisticLockerInterceptor"
class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
</bean>
<!-- 性能拦截器,兼打印sql,不建议生产环境配置-->
<bean id="performanceInterceptor"
class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"/>
</array>
</property>
</bean>
3.0
<!--注册SqlSessionFactory-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!-- 配置数据源 -->
<property name="dataSource" ref="shardingDataSource"/>
<property name="globalConfig" ref="globalConfig"/>
<!-- 配置 Mybatis 配置文件(可无) -->
<!--<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>-->
<!-- 自动扫描 Xml 文件位置 -->
<!--<property name="mapperLocations" value="classpath:mapper/with-sharding/*Mapper.xml" />-->
<!-- 枚举属性配置扫描,支持通配符 * 或者 ; 分割 -->
<!-- <property name="typeEnumsPackage" value="com.wlqq.insurance.conf.*.enums"/> -->
<property name="plugins">
<array>
<!-- 分页插件配置 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"/>
<!-- 乐观锁插件 -->
<bean id="optimisticLockerInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor">
</bean>
<!-- 性能拦截器,兼打印sql,不建议生产环境配置-->
<bean id="performanceInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor"/>
</array>
</property>
</bean>
全局策略配置
2.0
<!-- 定义 MP 全局策略 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 主键策略配置 -->
<!-- 可选参数
AUTO->`0`("数据库ID自增")
INPUT->`1`(用户输入ID")
ID_WORKER->`2`("全局唯一ID")
UUID->`3`("全局唯一ID")
-->
<property name="idType" value="0"/>
<!-- 数据库类型配置 -->
<property name="dbType" value="mysql"/>
<!-- 全局表为下划线命名设置 true -->
<property name="dbColumnUnderline" value="true"/>
</bean>
3.0
<!-- 定义 MP 全局策略 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig">
<bean class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
<!-- 主键策略配置 -->
<!-- 可选参数
AUTO->`0`("数据库ID自增")
INPUT->`1`(用户输入ID")
ID_WORKER->`2`("全局唯一ID")
UUID->`3`("全局唯一ID")
-->
<property name="idType" value="AUTO"/>
<!-- 数据库类型配置 -->
<property name="dbType" value="MYSQL"/>
<!-- 全局表为下划线命名设置 true -->
<property name="tableUnderline" value="true"/>
</bean>
</property>
</bean>
包结构修改
| 2.0 | 3.0 |
|---|---|
| com.baomidou.mybatisplus.activerecord.Model | com.baomidou.mybatisplus.extension.activerecord.Model; |
| com.baomidou.mybatisplus.annotations.TableField; | com.baomidou.mybatisplus.annotation.TableField; |
| com.baomidou.mybatisplus.annotations.TableId; | com.baomidou.mybatisplus.annotation.TableId; |
| com.baomidou.mybatisplus.enums.IdType; | com.baomidou.mybatisplus.annotation.IdType; |
| com.baomidou.mybatisplus.service.impl.ServiceImpl; | com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| com.baomidou.mybatisplus.mapper.BaseMapper; | com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| com.baomidou.mybatisplus.plugins.Page; | com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
Wrapper
删除了EntityWrapper,新增了QueryWrapper、UpdateWrapper、LambdaQueryWrapper、LambdaUpdateWrapper。EntityWrapper可用QueryWrapper来做替换。
2.0
EntityWrapper query = new EntityWrapper();
query.setEntity(RiskPrice.builder().code(code).enabled(true).build());
return dao.selectList(query);
3.0
QueryWrapper<RiskPrice> queryWrapper = new QueryWrapper<>(RiskPrice.builder().code(code).enabled(true).build());
return dao.selectList(queryWrapper);
或者
QueryWrapper<RiskPrice> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code", code).eq("enabled", true);
return dao.selectList(queryWrapper);
方法
BaseMapper
- 去除了insertAllColumn(T entity),updateAllColumn(T entity)方法
- 新增update(T entity, Wrapper updateWrapper)方法
IService
- insert和insertXXX方法改成了save和saveXXX方法
- deleteXXX改成了removeXXX方法
- 去掉了XXXAllColumnXXX方法
Wrapper
| 2.0 | 3.0 | 描述 |
|---|---|---|
| setSqlSelect(String sqlSelect) | select(R… columns); | 设置查询的返回列 |
Wrapper使用
QueryWrapper与UpdateWrapper共有方法
| 方法名 | 说明 |
|---|---|
| allEq | 基于 map 内容等于= |
| eq | 等于 = |
| ne | 不等于 <> |
| gt | 大于 > |
| ge | 大于等于 >= |
| lt | 小于 < |
| le | 小于等于 <= |
| between | BETWEEN 条件语句 |
| notBetween | NOT BETWEEN 条件语句 |
| like | LIKE ‘%值%’’ |
| notLike | NOT LIKE ‘%值%’ |
| likeLeft | LIKE ‘%值’ |
| likeRight | LIKE ‘值%’ |
| isNull | NULL 值查询 |
| isNotNull | NOT NULL 值查询 |
| in | IN 查询 |
| notIn | NOT IN 查询 |
| inSql | IN 查询(sql注入式) |
| notInSql | NOT IN 查询(sql注入式) |
| groupBy | 分组 GROUP BY |
| orderByAsc | ASC 排序 ORDER BY |
| orderByDesc | DESC 排序 ORDER BY |
| orderBy | 排序 ORDER BY |
| having | HAVING 关键词(sql注入式) |
| or | or 拼接 |
| apply | 拼接自定义内容(sql注入式) |
| last | 拼接在最后(sql注入式) |
| exists | EXISTS 条件语句(sql注入式) |
| notExists | NOT EXISTS 条件语句(sql注入式) |
| and(Function) | AND (嵌套内容) |
| or(Function) | OR (嵌套内容) |
| nested(Function) | (嵌套内容) |
QueryWrapper特有方法
| 方法名 | 说明 |
|---|---|
| select | SQL 查询字段内容,例如:id,name,age(重复设置以最后一次为准) |
UpdateWrapper特有方法
| 方法名 | 说明 |
|---|---|
| set | SQL SET 字段(一个字段使用一次) |
分页查询
IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);
参考:https://blog.csdn.net/m0_37840000/article/details/81604613
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)