# lp-sensitive-spring-boot-starter
**Repository Path**: vip-zywork/lp-sensitive-spring-boot-starter
## Basic Information
- **Project Name**: lp-sensitive-spring-boot-starter
- **Description**: 数据脱敏
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-08-17
- **Last Updated**: 2023-08-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 数据脱敏
## README
在开发中,因业务需要,有时要对一些敏感数据,进行加密存储,或展示,我们利用mybatis的一些特性进行脱敏处理,无需在业务逻辑中硬编码,每次去加密解密;
***
## 使用
引入依赖:
```xml
vip.zywork
lp-sensitive-spring-boot-starter
2023.08.20
```
***
### 第一种:入库需要加密,出库解密,前端展示脱敏
在需要脱敏的字段上添加注解:`@Sensitive`
#### 比如前端显示手机号:188****8888
#### 数据库存储:

```java
@Sensitive(displayType = SensitiveEnum.MOBILE_PHONE)
private SensitiveType phone;
```
其中`displayType = SensitiveEnum.MOBILE_PHONE`代表字段在前端展示的隐藏效果类型是手机号格式,还支持身份证号、家庭地址、邮箱等其他类型等,具体查看源码
** **SensitiveType类型是专门为需要入库加密字段创建的一个类型,**所有需要入库加密的字段都必须使用该类型**,里面有个属性value,也就是说值在value里

不加注解返回值是这样的

***
### 第二种:只在前端展示脱敏
只需要添加注解就行
```java
@Sensitive(displayType = SensitiveEnum.ADDRESS)
private String address;
```
返回值是这样的

如果想自定义隐藏长度,可以在注解中按照下面示例:
```java
@Sensitive(displayType = SensitiveEnum.NONE,front = 1,end = 1)
private String name;
```
其中,displayType 必须设为NONE,front表示保留前几位,end表示保留后几位
## 总结
入库加解密用`SensitiveType`类型修饰字段,只要mapper方法的入参或者返回值里包含这个类型,就出自动触发加解密(入参加密,出参解密),所以在**使用mybatis-plus时,入参的类型应该也是SensitiveType类型的才会触发效果**
```java
@GetMapping("/findByPhone")
public ResponseResult findByPhone(SensitiveType phone){
ParkingDemo one = parkingDemoService.getOne(Wrappers.lambdaQuery().eq(ParkingDemo::getPhone, phone));
return ResponseResult.success(one);
}
```
前端显示脱敏,在字段上添加注解`@Sensitive`