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

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

字段加密解密
?? mybatis-mate-encrypt(opens new window)[3]
注解 @FieldEncrypt 即可實現(xiàn)對字段的加密解密,支持 MD5_32、MD5_16、AES、RSA 等算法。
| 屬性 | 類型 | 必須指定 | 默認值 | 描述 |
|---|---|---|---|---|
| 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 個字符來表示任意二進制數(shù)據(jù)算法 |
| AES | AES 對稱算法 |
| RSA | 非對稱加密算法 |
| SM2 | 國密 SM2 非對稱加密算法,基于 ECC |
| SM3 | 國密 SM3 消息摘要算法,可以用 MD5 作為對比理解 |
| SM4 | 國密 SM4 對稱加密算法,無線局域網(wǎng)標準的分組數(shù)據(jù)算法 |
| PBEWithMD5AndDES | 混合算法 |
| PBEWithMD5AndTripleDES | 混合算法 |
| PBEWithHMACSHA512AndAES_256 | 混合算法 |
| PBEWithSHA1AndDESede | 混合算法 |
| PBEWithSHA1AndRC2_40 | 混合算法 |
?? 國密 SM2.3.4 算法使用規(guī)范(opens new window)[4]
MD5 算法為不可逆算法,存儲數(shù)據(jù)庫及查詢結(jié)果都是密文 SM4 算法必須依賴 bouncycastle 加密庫 混合算法必須依賴 jasypt 加密庫 【注意】查詢返回加密對象必須包含
加密注解信息,單純的返回某個 String 或者 List 某個集合是無法解密的。
數(shù)據(jù)審計(對賬)
?? mybatis-mate-audit(opens new window)[5]
數(shù)據(jù)審計功能可以幫助我們對比兩對象屬性差異,例如:銀行流水對賬。

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

總結(jié)
講真,這些新特性真心比較實用,可以為我們開發(fā)企業(yè)級項目節(jié)省很多精力。
如果大家在企業(yè)內(nèi)有 mybatis-mate 使用場景,不妨支持一下。更多 mybatis-mate 使用示例詳見: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]國密 SM2.3.4 算法使用規(guī)范(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/國密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
我是 Guide哥,一個工作2年有余,接觸編程已經(jīng)6年有余的程序員。大三開源 JavaGuide,目前已經(jīng) 100k+ Star。未來幾年,希望持續(xù)完善 JavaGuide,爭取能夠幫助更多學習 Java 的小伙伴!共勉!凎!點擊即可了解我的個人經(jīng)歷。
簡歷指導/Java 學習/面試指導/面試小冊,歡迎加入我的知識星球(公眾號后臺回復“星球”即可)。

