2.0到3.0主要升級(jí)的點(diǎn):
- 升級(jí) JDK 8 + 優(yōu)化性能 Wrapper 支持 lambda 語(yǔ)法
- 模塊化 MP 合理的分配各個(gè)包結(jié)構(gòu)
- 重構(gòu)注入方法丑孩,支持任意方法精簡(jiǎn)注入模式
- 全局配置下劃線轉(zhuǎn)換消滅注入 AS 語(yǔ)句
- 改造 Wrapper 更改為 QueryWrapper UpdateWrapper
- 重構(gòu) 分頁(yè)插件 消滅固定分頁(yè)模型嚎杨,支持 Mapper 直接返回 IPage 接口
- 新增 Rest Api 通過(guò) Controller 層
- 實(shí)體 String 類型字段默認(rèn)使用 LIKE 查詢 SelectOne 默認(rèn) LIMIT 1
- 輔助支持 selectMaps 新增 bean map 互轉(zhuǎn)工具類
- 增加 db2 支持 starter 改為 Spring boot 2+ 支持
- 重構(gòu)生成器提供自定義 DB 多種模板引擎支持
配置項(xiàng)
sqlSessionFactory 配置
2.0
<!--注冊(cè)SqlSessionFactory-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<!-- 配置數(shù)據(jù)源 -->
<property name="dataSource" ref="shardingDataSource"/>
<property name="globalConfig" ref="globalConfig"/>
<!-- 配置 Mybatis 配置文件(可無(wú)) -->
<!--<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>-->
<!-- 自動(dòng)掃描 Xml 文件位置 -->
<!--<property name="mapperLocations" value="classpath:mapper/with-sharding/*Mapper.xml" />-->
<!-- 枚舉屬性配置掃描枫浙,支持通配符 * 或者 ; 分割 -->
<!-- <property name="typeEnumsPackage" value="com.wlqq.insurance.conf.*.enums"/> -->
<property name="plugins">
<array>
<!-- 分頁(yè)插件配置 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
<!-- 樂(lè)觀鎖插件 -->
<bean id="optimisticLockerInterceptor"
class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor">
</bean>
<!-- 性能攔截器,兼打印sql黄痪,不建議生產(chǎn)環(huán)境配置-->
<bean id="performanceInterceptor"
class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"/>
</array>
</property>
</bean>
3.0
<!--注冊(cè)SqlSessionFactory-->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!-- 配置數(shù)據(jù)源 -->
<property name="dataSource" ref="shardingDataSource"/>
<property name="globalConfig" ref="globalConfig"/>
<!-- 配置 Mybatis 配置文件(可無(wú)) -->
<!--<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>-->
<!-- 自動(dòng)掃描 Xml 文件位置 -->
<!--<property name="mapperLocations" value="classpath:mapper/with-sharding/*Mapper.xml" />-->
<!-- 枚舉屬性配置掃描是嗜,支持通配符 * 或者 ; 分割 -->
<!-- <property name="typeEnumsPackage" value="com.wlqq.insurance.conf.*.enums"/> -->
<property name="plugins">
<array>
<!-- 分頁(yè)插件配置 -->
<bean id="paginationInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"/>
<!-- 樂(lè)觀鎖插件 -->
<bean id="optimisticLockerInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor">
</bean>
<!-- 性能攔截器鹅搪,兼打印sql丽柿,不建議生產(chǎn)環(huán)境配置-->
<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">
<!-- 主鍵策略配置 -->
<!-- 可選參數(shù)
AUTO->`0`("數(shù)據(jù)庫(kù)ID自增")
INPUT->`1`(用戶輸入ID")
ID_WORKER->`2`("全局唯一ID")
UUID->`3`("全局唯一ID")
-->
<property name="idType" value="0"/>
<!-- 數(shù)據(jù)庫(kù)類型配置 -->
<property name="dbType" value="mysql"/>
<!-- 全局表為下劃線命名設(shè)置 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">
<!-- 主鍵策略配置 -->
<!-- 可選參數(shù)
AUTO->`0`("數(shù)據(jù)庫(kù)ID自增")
INPUT->`1`(用戶輸入ID")
ID_WORKER->`2`("全局唯一ID")
UUID->`3`("全局唯一ID")
-->
<property name="idType" value="AUTO"/>
<!-- 數(shù)據(jù)庫(kù)類型配置 -->
<property name="dbType" value="MYSQL"/>
<!-- 全局表為下劃線命名設(shè)置 true -->
<property name="tableUnderline" value="true"/>
</bean>
</property>
</bean>
包結(jié)構(gòu)修改
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來(lái)做替換要尔。
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<T> updateWrapper)方法
IService
- insert和insertXXX方法改成了save和saveXXX方法
- deleteXXX改成了removeXXX方法
- 去掉了XXXAllColumnXXX方法
Wrapper
2.0 | 3.0 | 描述 |
---|---|---|
setSqlSelect(String sqlSelect) | select(R... columns); | 設(shè)置查詢的返回列 |
Wrapper<T>使用
QueryWrapper<T>與UpdateWrapper<T>共有方法
方法名 | 說(shuō)明 |
---|---|
allEq | 基于 map 內(nèi)容等于= |
eq | 等于 = |
ne | 不等于 <> |
gt | 大于 > |
ge | 大于等于 >= |
lt | 小于 < |
le | 小于等于 <= |
between | BETWEEN 條件語(yǔ)句 |
notBetween | NOT BETWEEN 條件語(yǔ)句 |
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 關(guān)鍵詞(sql注入式) |
or | or 拼接 |
apply | 拼接自定義內(nèi)容(sql注入式) |
last | 拼接在最后(sql注入式) |
exists | EXISTS 條件語(yǔ)句(sql注入式) |
notExists | NOT EXISTS 條件語(yǔ)句(sql注入式) |
and(Function) | AND (嵌套內(nèi)容) |
or(Function) | OR (嵌套內(nèi)容) |
nested(Function) | (嵌套內(nèi)容) |
QueryWrapper<T>特有方法
方法名 | 說(shuō)明 |
---|---|
select | SQL 查詢字段內(nèi)容,例如:id,name,age(重復(fù)設(shè)置以最后一次為準(zhǔn)) |
UpdateWrapper<T>特有方法
方法名 | 說(shuō)明 |
---|---|
set | SQL SET 字段(一個(gè)字段使用一次) |
分頁(yè)查詢
IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);
參考:https://blog.csdn.net/m0_37840000/article/details/81604613