studentList=studentResult.getList();
System.out.println(classList);
System.out.println(studentList);
}
```
### 高级功能
目前有`字典翻译`和`数据脱敏`
如果你要使用这两个功能的任意一个,那么需要在你项目中继承`ExcelConverterCore`(例如本demo中的`ExcelConverter`,文章下文均以此举例)
然后在`@ExcelPropert`注解中的`converter`参数指定为`ExcelConverter.class`
#### 功能一:数据脱敏
在导出时,对需要进行脱敏的字段使用@Masked注解
MaskedType是内置的枚举类型,内置支持的数据类型有:姓名,手机号,身份证号码,银行卡号,电子邮箱,地址信息,IP地址
```java
@ExcelProperty(value = "学生姓名", converter = ExcelConverter.class)
@Masked(type = MaskedType.NAME)
private String studentName;
```
如果你希望使用自己的脱敏算法,那么你可以在`ExcelConverter`中重写`mask`方法:
```
/**
* 数据脱敏
* 如果你不想使用内置的脱敏算法,那么可以通过重写该方法来实现使用自己的脱敏算法
*
* @param type 数据类型,@Masked的type参数
* @param value 待脱敏的数据值
* @return
*/
@Override
public String masked(Integer type, String value)
```
然后你你就可以在`@Masked`注解中传入你需要的type,并且在重写的`mask`方法中接收到,然后处理并返回你的脱敏结果
#### 功能二:字典翻译
在导入导出时,对需要进行字典翻译的字段使用`@Dict`注解
该注解有两个参数
| 参数 | 释义 |
|---------------------|--------|
| String dictCode | 字典编码 |
| DictDetail[] custom | 简易字典明细 |
这两个参数二选一即可
##### 使用简易字典明细
如果你选择使用简易字典明细,案例如下,该种方式是将字典明细写死在代码中
```java
@ExcelProperty(value = "学生性别", converter = ExcelConverter.class)
@Dict(custom = {@DictDetail(value = "0", label = "女"), @DictDetail(value = "1", label = "男")})
private String studentSex;
```
##### 使用字典编码
如果你选择使用字典编码,案例如下,该种方式可以通过其他数据源进行翻译,例如redis、数据库等
```java
@ExcelProperty(value = "学生性别", converter = ExcelConverter.class)
@Dict(dictCode = "student_sex", custom = {})
private String studentSex;
```
同时需要在`ExcelConverter`中重写`dictToLabel`、`dictToValue`方法,分别用来将字典值转换到标签、字典标签转换到值
```java
/**
* 字典转换:字典值转换到标签
* 你可在该方法中查询你的redis、数据库或者其他方式进行翻译
*
* 如果使用自定义字典进行翻译,那么可以不重写该方法
*
* @param dict
* @param value
* @return
*/
@Override
public String dictToLabel(Dict dict,String value){
String dictCode=dict.dictCode();//student_sex
//通过redis、数据库或者其他方式进行翻译,例如 value 是1,那么返回男
return"男";
}
/**
* 字典转换:字典标签转换到值
* 你可在该方法中查询你的redis、数据库或者其他方式进行翻译
*
* 如果使用自定义字典进行翻译,那么可以不重写该方法
*
* @param dict
* @param label
* @return
*/
@Override
public String dictToValue(Dict dict,String label){
String dictCode=dict.dictCode();//student_sex
//通过redis、数据库或者其他方式进行翻译,例如 label 是男,那么返回1
return"1";
}
```