# Mybatis数据字段加密插件
**Repository Path**: chenshuzhuo/mybatis-encrypt-plugins
## Basic Information
- **Project Name**: Mybatis数据字段加密插件
- **Description**: 支持Mybatis数据字段加密新增、更新、查询的插件
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 9
- **Created**: 2022-08-23
- **Last Updated**: 2022-08-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Mybatis数据字段加密插件
#### 介绍
支持Mybatis数据字段加密新增、更新、查询的插件
#### 软件架构
该项目依赖Mybatis-Plus、JSqlParse的技术框架,基于ShardingJDBC数据脱敏的方式实现:
利用JSqlParse提供的SQL解析技术,通过解析Select、Insert、Update的SQL,比对用户所配置的加密规则策略,动态加密数据字段,从而实现数据的动态加密新增、更新、查询。
用户的项目仅需要引入该框架的依赖,编写加密策略到配置文件中,无需修改任何业务代码(比如:加注解或切面等方式),则可以实现数据的动态加密新增、更新、查询。
#### 安装教程
1. 引入插件依赖
```
org.dflish
mybatis-encrypt-plugins
1.0-SNAPSHOT
```
2. 配置加密策略
```
mybatis-plus:
encrypt:
enabled: true
key: liangwx
tables:
tbl_sys_users:
columns:
password:
encryptor: true
pwd_duration:
desensitized: true
```
3. 正常编写上层业务代码
#### 测试教程
1. 加密新增测试
运行单元测试类org.dflish.mybatis.encrypt.AppTest#add
```
@Test
public void add(){
User user = new User();
user.setUserId("test01");
user.setUserName("小明");
user.setNickName("test01");
user.setPassword("124124124214");
user.setPwdDuration("124124124214");
usersService.save(user);
}
```
2. 加密更新测试
运行单元测试类org.dflish.mybatis.encrypt.AppTest#update
```
@Test
public void update(){
User user = new User();
user.setUserId("test01");
user.setUserName("小明02");
user.setNickName("test02");
user.setPassword("13726788913");
user.setPwdDuration("13726788913");
usersService.updateById(user);
}
```
3. 加密查询测试
运行单元测试类org.dflish.mybatis.encrypt.AppTest#queryTest
```
@Test
public void queryTest(){
final LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(User.class);
lambdaQueryWrapper.eq(User::getPassword, "13726788913");
lambdaQueryWrapper.eq(User::getPwdDuration, "13726788913");
List list = usersService.list(lambdaQueryWrapper);
list.forEach(e -> {
log.info(e.toString());
});
}
```
#### 参与贡献
1. Mybatis
2. JSqlParse
3. ShardingJDBC