官宣!Mybatis-Plus 官方神器發(fā)布!??!
點(diǎn)擊上方“碼農(nóng)突圍”,馬上關(guān)注
這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專(zhuān)屬大禮包 真愛(ài),請(qǐng)?jiān)O(shè)置“星標(biāo)”或點(diǎn)個(gè)“在看
今天推薦一個(gè) MyBatis - Plus 官方發(fā)布的神器:mybatis-mate 。
mybatis-mate 為 Mybatis-Plus 企業(yè)級(jí)模塊,支持分庫(kù)分表,數(shù)據(jù)審計(jì)、數(shù)據(jù)敏感詞過(guò)濾(AC 算法),字段加密,字典回寫(xiě)(數(shù)據(jù)綁定),數(shù)據(jù)權(quán)限,表結(jié)構(gòu)自動(dòng)生成 SQL 維護(hù)等,旨在更敏捷優(yōu)雅處理數(shù)據(jù)。
不過(guò),需要注意的是:這些特性目前購(gòu)買(mǎi)授權(quán),并不是免費(fèi)開(kāi)放使用。
下面我會(huì)簡(jiǎn)單介紹一下這些高級(jí)特性以及使用方法。
使用
Spring Boot 引入自動(dòng)依賴注解包 :
<dependency>
??<groupId>com.baomidougroupId>
??<artifactId>mybatis-mate-starterartifactId>
??<version>1.0.8version>
dependency>
注解(實(shí)體分包使用):
<dependency>
??<groupId>com.baomidougroupId>
??<artifactId>mybatis-mate-annotationartifactId>
??<version>1.0.8version>
dependency>
主要功能介紹
字段脫敏 數(shù)據(jù)敏感詞過(guò)濾 字段加密解密 數(shù)據(jù)審計(jì)(對(duì)賬) 數(shù)據(jù)庫(kù)分庫(kù)分表、動(dòng)態(tài)據(jù)源、讀寫(xiě)分離、數(shù)據(jù)庫(kù)健康檢查自動(dòng)切換。 字典綁定 表結(jié)構(gòu)動(dòng)態(tài)維護(hù) 數(shù)據(jù)范圍(數(shù)據(jù)權(quán)限)
字段脫敏
?? mybatis-mate-sensitive-jackson[1]
注解 @FieldSensitive 即可實(shí)現(xiàn)數(shù)據(jù)脫敏,內(nèi)置 手機(jī)號(hào)、郵箱、銀行卡號(hào) 等 9 種常用脫敏規(guī)則
| 屬性 | 類(lèi)型 | 必須指定 | 默認(rèn)值 | 描述 |
|---|---|---|---|---|
| type | String | 是 | "" | 脫敏類(lèi)型 |

數(shù)據(jù)敏感詞過(guò)濾
?? mybatis-mate-sensitive-words(opens new window)[2]
數(shù)據(jù)敏感詞過(guò)濾(AC 算法)配置完處理器,框架自動(dòng)處理請(qǐng)求的所有字符串敏感詞過(guò)濾,支持嵌套關(guān)鍵詞讓敏感詞無(wú)處遁形。
數(shù)據(jù)庫(kù)自維護(hù)敏感詞庫(kù)(免費(fèi)、可控),默認(rèn)加載緩存詞根支持指定重新加載詞庫(kù)。

字段加密解密
?? mybatis-mate-encrypt(opens new window)[3]
注解 @FieldEncrypt 即可實(shí)現(xiàn)對(duì)字段的加密解密,支持 MD5_32、MD5_16、AES、RSA 等算法。
| 屬性 | 類(lèi)型 | 必須指定 | 默認(rèn)值 | 描述 |
|---|---|---|---|---|
| password | String | 否 | "" | 加密密碼 |
| algorithm | Algorithm | 否 | PBEWithMD5AndDES | PBE MD5 DES 混合算法 |
| encryptor | Class | 否 | IEncryptor | 加密處理器 |
@FieldEncrypt
private?String?email;
算法 Algorithm :
| 算法 | 描述 |
|---|---|
| MD5_32 | 32 位 md5 算法 |
| MD5_16 | 16 位 md5 算法 |
| BASE64 | 64 個(gè)字符來(lái)表示任意二進(jìn)制數(shù)據(jù)算法 |
| AES | AES 對(duì)稱(chēng)算法 |
| RSA | 非對(duì)稱(chēng)加密算法 |
| SM2 | 國(guó)密 SM2 非對(duì)稱(chēng)加密算法,基于 ECC |
| SM3 | 國(guó)密 SM3 消息摘要算法,可以用 MD5 作為對(duì)比理解 |
| SM4 | 國(guó)密 SM4 對(duì)稱(chēng)加密算法,無(wú)線局域網(wǎng)標(biāo)準(zhǔn)的分組數(shù)據(jù)算法 |
| PBEWithMD5AndDES | 混合算法 |
| PBEWithMD5AndTripleDES | 混合算法 |
| PBEWithHMACSHA512AndAES_256 | 混合算法 |
| PBEWithSHA1AndDESede | 混合算法 |
| PBEWithSHA1AndRC2_40 | 混合算法 |
?? 國(guó)密 SM2.3.4 算法使用規(guī)范(opens new window)[4]
MD5 算法為不可逆算法,存儲(chǔ)數(shù)據(jù)庫(kù)及查詢結(jié)果都是密文 SM4 算法必須依賴 bouncycastle 加密庫(kù) 混合算法必須依賴 jasypt 加密庫(kù) 【注意】查詢返回加密對(duì)象必須包含
加密注解信息,單純的返回某個(gè) String 或者 List 某個(gè)集合是無(wú)法解密的。
數(shù)據(jù)審計(jì)(對(duì)賬)
?? mybatis-mate-audit(opens new window)[5]
數(shù)據(jù)審計(jì)功能可以幫助我們對(duì)比兩對(duì)象屬性差異,例如:銀行流水對(duì)賬。

多數(shù)據(jù)源分庫(kù)分表(讀寫(xiě)分離)
?? mybatis-mate-sharding(opens new window)[6]
注解 @Sharding
| 屬性 | 類(lèi)型 | 必須指定 | 默認(rèn)值 | 描述 |
|---|---|---|---|---|
| value | String | 是 | "" | 分庫(kù)組名,空使用默認(rèn)主數(shù)據(jù)源 |
| strategy | Class | 否 | RandomShardingStrategy | 分庫(kù)&分表策略 |
配置
mybatis-mate:
??sharding:
????health:?true?#?健康檢測(cè)
????primary:?mysql?#?默認(rèn)選擇數(shù)據(jù)源
????datasource:
??????mysql:?#?數(shù)據(jù)庫(kù)組
????????-?key:?node1
??????????...
????????-?key:?node2
??????????cluster:?slave?#?從庫(kù)讀寫(xiě)分離時(shí)候負(fù)責(zé)?sql?查詢操作,主庫(kù)?master?默認(rèn)可以不寫(xiě)
??????????...
??????postgres:
????????-?key:?node1?#?數(shù)據(jù)節(jié)點(diǎn)
??????????...
注解 Sharding切換數(shù)據(jù)源,組內(nèi)節(jié)點(diǎn)默認(rèn)隨機(jī)選擇(查從寫(xiě)主)
@Mapper
@Sharding("mysql")
public?interface?UserMapper?extends?BaseMapper<User>?{
????@Sharding("postgres")
????Long?selectByUsername(String?username);
}
切換指定數(shù)據(jù)庫(kù)節(jié)點(diǎn)
//?切換到?mysql?從庫(kù)?node2?節(jié)點(diǎn)
ShardingKey.change("mysqlnode2");
其他
還有像數(shù)據(jù)范圍(數(shù)據(jù)權(quán)限)、表結(jié)構(gòu)自動(dòng)維護(hù)、字段數(shù)據(jù)綁定(字典回寫(xiě))等比較實(shí)用的高級(jí)特性,我們這里就不做詳細(xì)介紹了。
感興趣的小伙伴可以去看看官方的文檔(中文文檔,寫(xiě)的很詳細(xì)):https://baomidou.com/guide/mybatis-mate.html 。

總結(jié)
講真,這些新特性真心比較實(shí)用,可以為我們開(kāi)發(fā)企業(yè)級(jí)項(xiàng)目節(jié)省很多精力。
如果大家在企業(yè)內(nèi)有 mybatis-mate 使用場(chǎng)景,不妨支持一下。更多 mybatis-mate 使用示例詳見(jiàn):https://gitee.com/baomidou/mybatis-mate-examples
參考資料
mybatis-mate-sensitive-jackson: https://gitee.com/baomidou/mybatis-mate-examples/tree/master/mybatis-mate-sensitive-jackson
[2]mybatis-mate-sensitive-words(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/mybatis-mate-sensitive-words
[3]mybatis-mate-encrypt(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/mybatis-mate-encrypt
[4]國(guó)密 SM2.3.4 算法使用規(guī)范(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/國(guó)密SM2.3.4算法使用規(guī)范
[5]mybatis-mate-audit(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/mybatis-mate-audit
[6]mybatis-mate-sharding(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/mybatis-mate-sharding
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤(pán)了,歡迎下載!
面試題】即可獲取

