明天举荐一个 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 种罕用脱敏规定

属性类型必须指定默认值形容
typeString""脱敏类型

数据敏感词过滤

 mybatis-mate-sensitive-words(opens new window)[2]

数据敏感词过滤(AC 算法)配置完处理器,框架主动解决申请的所有字符串敏感词过滤,反对嵌套关键词让敏感词无处遁形。

数据库自保护敏感词库(收费、可控),默认加载缓存词根反对指定从新加载词库。

字段加密解密

 mybatis-mate-encrypt(opens new window)[3]

注解 @FieldEncrypt 即可实现对字段的加密解密,反对 MD5\_32、MD5\_16、AES、RSA 等算法。

属性类型必须指定默认值形容
passwordString""加密明码
algorithmAlgorithmPBEWithMD5AndDESPBE MD5 DES 混合算法
encryptorClassIEncryptor加密处理器
@FieldEncryptprivate String email;

算法 Algorithm :

算法形容
MD5\_3232 位 md5 算法
MD5\_1616 位 md5 算法
BASE6464 个字符来示意任意二进制数据算法
AESAES 对称算法
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
属性类型必须指定默认值形容
valueString""分库组名,空应用默认主数据源
strategyClassRandomShardingStrategy分库&分表策略
  • 配置
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...