# mybatis-encrypt-boot-starter
**Repository Path**: bit4/mybatis-encrypt-boot-starter
## Basic Information
- **Project Name**: mybatis-encrypt-boot-starter
- **Description**: mybatis加密插件
支持纯mybatis和mybatis-plus
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2023-04-01
- **Last Updated**: 2026-01-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Mybatis-Encrypt-Boot-Starter
## 简介
Mybatis数据加解密模块
当前版本:1.0.0
## 特性
- 支持列级密码控制,提高数据安全性
- 支持自定义加解密算法
- 支持数据完整性校验
- 支持几乎所有数据类型加解密,原代码改动小
- 支持多线程数据解密,加快查询速度
- 支持自定义解密线程池
- 支持加密数据eq查询
- 同时兼容Mybatis和Mybatis Plus
- 内置AES-SHA256数据加密实现
## 快速开始
1. 添加依赖
- maven
```xml
cn.bincker
mybatis-encrypt-boot-starter
[version]
```
- gradle
```groovy
implementation "cn.bincker:mybatis-encrypt-boot-starter:$version"
```
2. 添加注解
```java
public class User{
// ...
@Encrypt
private String realName;
@Encrypt
private String phone;
// ...
}
```
3. 重新创建对应的数据表
```sql
-- 把所有需要加密的字段改为 bytea/blob 类型
create table "user" (
-- ...
real_name bytea,
phone bytea
-- ...
)
```
4. 给加密字段的ResultMap添加jdbc类型
```xml
```
5. 配置
```java
@Configuration
public class EncryptConfiguration implements MybatisEncryptConfigurer {
/**
* 选择加解密实现
**/
@Bean
public Encryptor encryptor(){
return new AesAndSha256Encryptor();
}
/**
* 通过类和字段名选择密钥
* 通过类和字段名对数据摘要加盐混淆
**/
@Bean
public EncryptKeyProvider temporaryKeyProvider(){
return new EncryptKeyProvider(){
// implementation...
};
}
}
```
6. 迁移数据
你可以使用[mybatis-encrypt-data-migration](https://gitee.com/Bincker1973/mybatis-encrypt-data-migration)项目进行迁移,或者自行迁移
7. 检查代码中加密数据除了eq的所有查询,统统去除或者改为eq,且eq参数需要为EncryptParam
8. 启动项目校验数据
9. 完成
## 注意事项
- 加密字段在数据库中需要为Bytea类型
- 加密字段在ResultMap中需要添加jdbc类型
- 加密字段无法在查询中进行计算,只能进行eq查询
- 需要通过加密字段进行查询时,参数必须为实体类或EncryptParam和LambdaEncryptParam
## 解密缓存
实现EncryptCache的Bean即可
## 进度
✔ 实现加密基础框架
✔ AES默认实现
✔ 数据插入加密
✔ 单个字段数据查询
✔ Mybatis Plus数据查询
✔ Mybatis Plus Lambda数据查询
✔ 数据更新测试
✔ 数据完整性校验
✔ Mybatis测试
✔ Mybatis Plus测试
✔ 数据完整性测试
✔ 解密缓存