一、主要功能
- 字典绑定
- 字段加密
- 数据脱敏
- 表结构动态维护
- 数据审计记录
- 数据范围(数据权限)
- 数据库分库分表、动态据源、读写分离、数据库健康检查自动切换。
二、使用
2.1 依赖导入
- Spring Boot 引入自动依赖注解包
1 | plain复制代码<dependency> |
- 注解(实体分包使用)
1 | plain复制代码<dependency> |
2.2 字典绑定
- 例如 user_sex 类型 sex 字典结果映射到 sexText 属性
1 | java复制代码@FieldDict(type = "user_sex", target = "sexText") |
- 实现 IDataDict 接口提供字典数据源,注入到 Spring 容器即可。
1 | java复制代码@Component |
2.3 字段加密
属性 @FieldEncrypt 注解即可加密存储,会自动解密查询结果,支持全局配置加密密钥算法,及注解密钥算法,可以实现 IEncryptor 注入自定义算法。
1 | java复制代码@FieldEncrypt(algorithm = Algorithm.PBEWithMD5AndDES) |
2.4 数据脱敏
- 属性 @FieldSensitive 注解即可自动按照预设策略对源数据进行脱敏处理,默认 SensitiveType 内置 9 种常用脱敏策略。例如:中文名、银行卡账号、手机号码、固话号码、邮寄地址、电子邮箱、身份证号码、密码、车牌号 脱敏策略,也可以自定义策略如下:
1 | java复制代码@FieldSensitive(type = "testStrategy") |
- 自定义脱敏策略 testStrategy 添加到默认策略中注入 Spring 容器即可。
1 | java复制代码@Configuration |
2.5 DDL 数据结构自动维护
- 解决升级表结构初始化,版本发布更新 SQL 维护问题,目前支持 MySql、PostgreSQL。
1 | java复制代码@Component |
- 不仅仅可以固定执行,也可以动态执行!!
1 | java复制代码ddlScript.run(new StringReader("DELETE FROM user;\n" + |
- 这样就完了吗??当然没有,它还支持多数据源执行!!!
1 | java复制代码@Component |
2.6 动态多数据源主从自由切换
- @Sharding 注解支持一句话使数据源不限制随意使用切换,你可以在 mapper 层添加注解,按需求指哪打哪!!
1 | java复制代码@Mapper |
- 你也可以自定义策略统一调兵遣将
1 | java复制代码@Component |
可以开启主从策略,当然也是可以开启健康检查!!!
2.7 数据权限
- mapper 层添加注解:
1 | java复制代码// 测试 test 类型数据权限范围,混合分页模式 |
- 模拟业务处理逻辑:
1 | java复制代码@Bean |
- 最终执行 SQL 输出:
1 | sql复制代码SELECT u.* FROM user u |
三、最后
大家好,我是 如梦技术春哥(mica 微服务组件开源作者)笔者使用 mybatis-plus
已有 4 年多(资深老粉),mybatis-plus
帮助我们大大提升了开发效率,统一了企业内代码开发风格,降低维护成本。
如果大家在企业内有 mybatis-mate
使用场景,不妨支持一下。更多 mybatis-mate
使用示例详见:gitee.com/baomidou/my…
本文转载自: 掘金