明天举荐一个 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 | 加密处理器 |
@FieldEncryptprivate 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...