官宣!Mybatis-Plus 官方神器发布!!!

JavaGuide

共 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 种常用脱敏规则

属性类型必须指定默认值描述
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加密处理器
@FieldEncrypt
private 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/mybatis-mate.html 。

总结

讲真,这些新特性真心比较实用,可以为我们开发企业级项目节省很多精力。

如果大家在企业内有 mybatis-mate 使用场景,不妨支持一下。更多 mybatis-mate 使用示例详见:https://gitee.com/baomidou/mybatis-mate-examples

参考资料

[1]

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

············  END  ··············

也许你还想看
  | 官宣!我升级了!!!
  | 我在 B 站淘了 2 个 Java 实战项目! 小破站,YYDS!
  | 1w+字的 Dubbo 面试题/知识点总结!(2021 最新版)
  | 7年前,24岁,出版了一本 Redis 神书
  | 京东二面:为什么需要分布式ID?你项目中是怎么做的?
  | 再见 Spring Task,这个定时任务框架真香!
  | 一键生成数据库文档,堪称数据库界的Swagger
  | 来看看这个超好用的项目脚手架吧!5分钟搭建一个Spring Boot 前后端分离系统!
  | 阿里开源的15个顶级Java项目!!!

我是 Guide哥,一个工作2年有余,接触编程已经6年有余的程序员。大三开源 JavaGuide,目前已经 100k+ Star。未来几年,希望持续完善 JavaGuide,争取能够帮助更多学习 Java 的小伙伴!共勉!凎!点击即可了解我的个人经历

简历指导/Java 学习/面试指导/面试小册,欢迎加入我的知识星球(公众号后台回复“星球”即可)。

浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报