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

大家好,我是 Guide!

今天推荐一个 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""脱敏类型
49b6aa7e37cbd04a33f944fbcdea52b6.png

数据敏感词过滤

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

数据敏感词过滤(AC 算法)配置完处理器,框架自动处理请求的所有字符串敏感词过滤,支持嵌套关键词让敏感词无处遁形。

数据库自维护敏感词库(免费、可控),默认加载缓存词根支持指定重新加载词库。

ec3d6043c90a5f3d19d8af0fd0f6f6fc.png

字段加密解密

👉 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]

数据审计功能可以帮助我们对比两对象属性差异,例如:银行流水对账。

0eee39ecc6ba134eab7598f98eb998a8.png

多数据源分库分表(读写分离)

👉 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 。

87e92dcd0f9419e02a1fdf7c73e6c5a4.png

总结

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

如果大家在企业内有 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  ··············


43c606c97874eb3cb11793da786ed1e4.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis-Mate-Encrypt 是 Mybatis-Mate 的一个插件,用于在 Mybatis 中对敏感数据进行加密和解密处理。 使用步骤如下: 1. 引入 Mybatis-Mate-Encrypt 依赖: ```xml <dependency> <groupId>com.github.mybatis-mate</groupId> <artifactId>mybatis-mate-encrypt</artifactId> <version>1.0.3</version> </dependency> ``` 2. 在 Mybatis 配置文件中配置插件: ```xml <plugins> <plugin interceptor="com.github.mybatis.mate.encrypt.EncryptInterceptor"> <!-- AES加密key --> <property name="aesKey" value="1234567890123456"/> <!-- 加密字段配置 --> <property name="encryptColumns"> <!-- 配置表名、列名、加密类型 --> <encryptColumn tableName="user" columnName="password" encryptType="AES"/> </property> </plugin> </plugins> ``` 3. 在 Java 实体类中使用 @EncryptField 注解标注需要加密的字段: ```java public class User { private Integer id; private String username; @EncryptField(type = EncryptType.AES) private String password; // getter 和 setter 略 } ``` 4. 在 Mapper.xml 文件中使用 ${} 访问加密字段: ```xml <select id="getUserById" resultType="User"> select id, username, ${password} as password from user where id = #{id} </select> ``` 5. 在 Service 中调用 Mapper 方法即可: ```java public User getUserById(Integer id) { return userMapper.getUserById(id); } ``` 以上就是 Mybatis-Mate-Encrypt 的使用方法。需要注意的是,Mybatis-Mate-Encrypt 目前只支持 AES 加密和解密。如需使用其他加密算法,可以自行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值