官宣!Mybatis-Plus 官方神器发布!!!
共 3855字,需浏览 8分钟
·
2021-11-26 22:03
大家好,我是 Guide!
今天推荐一个 MyBatis - Plus 官方发布的神器:mybatis-mate 。
mybatis-mate 为 Mybatis-Plus 企业级模块,支持分库分表,数据审计、数据敏感词过滤(AC 算法),字段加密,字典回写(数据绑定),数据权限,表结构自动生成 SQL 维护等,旨在更敏捷优雅处理数据。
不过,需要注意的是:这些特性目前购买授权,并不是免费开放使用。
下面我会简单介绍一下这些高级特性以及使用方法。
使用
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>
主要功能介绍
字段脱敏 数据敏感词过滤 字段加密解密 数据审计(对账) 数据库分库分表、动态据源、读写分离、数据库健康检查自动切换。 字典绑定 表结构动态维护 数据范围(数据权限)
字段脱敏
👉 mybatis-mate-sensitive-jackson[1]
注解 @FieldSensitive
即可实现数据脱敏,内置 手机号
、邮箱
、银行卡号
等 9 种常用脱敏规则
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
type | String | 是 | "" | 脱敏类型 |
数据敏感词过滤
👉 mybatis-mate-sensitive-words(opens new window)[2]
数据敏感词过滤(AC 算法)配置完处理器,框架自动处理请求的所有字符串敏感词过滤,支持嵌套关键词让敏感词无处遁形。
数据库自维护敏感词库(免费、可控),默认加载缓存词根支持指定重新加载词库。
字段加密解密
👉 mybatis-mate-encrypt(opens new window)[3]
注解 @FieldEncrypt
即可实现对字段的加密解密,支持 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 个字符来表示任意二进制数据算法 |
AES | AES 对称算法 |
RSA | 非对称加密算法 |
SM2 | 国密 SM2 非对称加密算法,基于 ECC |
SM3 | 国密 SM3 消息摘要算法,可以用 MD5 作为对比理解 |
SM4 | 国密 SM4 对称加密算法,无线局域网标准的分组数据算法 |
PBEWithMD5AndDES | 混合算法 |
PBEWithMD5AndTripleDES | 混合算法 |
PBEWithHMACSHA512AndAES_256 | 混合算法 |
PBEWithSHA1AndDESede | 混合算法 |
PBEWithSHA1AndRC2_40 | 混合算法 |
👉 国密 SM2.3.4 算法使用规范(opens new window)[4]
MD5 算法为不可逆算法,存储数据库及查询结果都是密文 SM4 算法必须依赖 bouncycastle 加密库 混合算法必须依赖 jasypt 加密库 【注意】查询返回加密对象必须包含
加密注解
信息,单纯的返回某个 String 或者 List 某个集合是无法解密的。
数据审计(对账)
👉 mybatis-mate-audit(opens new window)[5]
数据审计功能可以帮助我们对比两对象属性差异,例如:银行流水对账。
多数据源分库分表(读写分离)
👉 mybatis-mate-sharding(opens new window)[6]
注解 @Sharding
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 是 | "" | 分库组名,空使用默认主数据源 |
strategy | Class | 否 | RandomShardingStrategy | 分库&分表策略 |
配置
mybatis-mate:
sharding:
health: true # 健康检测
primary: mysql # 默认选择数据源
datasource:
mysql: # 数据库组
- key: node1
...
- key: node2
cluster: slave # 从库读写分离时候负责 sql 查询操作,主库 master 默认可以不写
...
postgres:
- key: node1 # 数据节点
...
注解 Sharding
切换数据源,组内节点默认随机选择(查从写主)
@Mapper
@Sharding("mysql")
public interface UserMapper extends BaseMapper<User> {
@Sharding("postgres")
Long selectByUsername(String username);
}
切换指定数据库节点
// 切换到 mysql 从库 node2 节点
ShardingKey.change("mysqlnode2");
其他
还有像数据范围(数据权限)、表结构自动维护、字段数据绑定(字典回写)等比较实用的高级特性,我们这里就不做详细介绍了。
感兴趣的小伙伴可以去看看官方的文档(中文文档,写的很详细):https://baomidou.com/guide/mybatis-mate.html 。
总结
讲真,这些新特性真心比较实用,可以为我们开发企业级项目节省很多精力。
如果大家在企业内有 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 算法使用规范(opens new window): https://gitee.com/baomidou/mybatis-mate-examples/tree/master/国密SM2.3.4算法使用规范
[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年有余,接触编程已经6年有余的程序员。大三开源 JavaGuide,目前已经 100k+ Star。未来几年,希望持续完善 JavaGuide,争取能够帮助更多学习 Java 的小伙伴!共勉!凎!点击即可了解我的个人经历。
简历指导/Java 学习/面试指导/面试小册,欢迎加入我的知识星球(公众号后台回复“星球”即可)。