明天举荐一个 MyBatis – Plus 官网公布的神器:mybatis-mate。
mybatis-mate 为 Mybatis-Plus 企业级模块,反对分库分表,数据审计、数据敏感词过滤(AC 算法),字段加密,字典回写(数据绑定),数据权限,表构造主动生成 SQL 保护等,旨在更麻利优雅解决数据。
不过,须要留神的是:这些个性目前购买受权,并不是收费凋谢应用。
上面我会简略介绍一下这些高级个性以及应用办法。
应用
Spring Boot 引入主动依赖注解包:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-mate-starter</artifactId>
<version>1.0.8</version>
</dependency>
注解(实体分包应用):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-mate-annotation</artifactId>
<version>1.0.8</version>
</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/my…。
总结
讲真,这些新个性真心比拟实用,能够为咱们开发企业级我的项目节俭很多精力。
如果大家在企业内有 mybatis-mate 应用场景,无妨反对一下。更多 mybatis-mate 应用示例详见:https://gitee.com/baomidou/my…