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

码农突围

共 3519字,需浏览 8分钟

 ·

2021-12-01 00:29

点击上方“码农突围”,马上关注

这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看

今天推荐一个 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-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【面试题】即可获取
浏览 90
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报