统一开发平台系统开发日志(第五天)

本文介绍了如何使用EasyExcel进行数据字典的Excel导入,包括创建实体类和读写数据库。同时探讨了如何利用Spring Cache技术对数据字典进行缓存,以提高数据处理效率,特别是在面对大量数据时的优化策略。
摘要由CSDN通过智能技术生成

1.数据字典

在之前设置的数据字典的服务写代码

对数据字典表的增删改查,

2.数据字典初始数据

数据字典的初始数据利用EasyExcel导入

EasyExcel基本使用

2.1导入依赖

<!-- easyexcel依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
</dependency>

2.2创建实体类

@Data
public class UserData{
    @ExcelProperty("用户编号")  //该注解是表头上的字段名
    private int uid;

    @ExcelProperty("用户名称")
    private String username;
}

2.3读取数据库写入excel

public class TestWriter {
    public static void main(String[] args){
        //模拟一个List集合
        List<UserData> list = new ArrayList();
        for(int i=0; i<10; i++){
            UserData data = new UserData();
            data.setUid(i);
            data.setUsername("lucy" + i);
            list.add(data);
        }
        //1.设置excel文件路径和文件名称(文件夹必须已存在)
        String fileName = "E:\\excel\\01.xlsx";
        //2.调用方法实现写操作
        EasyExcel.write(fileName, UserData.class)
                .sheet("用户信息")    //excel工作表的名字
                .doWrite(list);
    }
}

2.4写入数据库 创建实体类但需要修改

@Data
public class UserData{
    @ExcelProperty(value="用户编号", index = 0)  //index表示顺序,0表示对应表中第1个字段
    private int uid;

    @ExcelProperty(value = "用户名称", index = 1)
    private String username;
}

2.5创建类并继承AnalysisEventListener

public class ExcelListener extends AnalysisEventListener<UserData> {
    @Override
    public void invoke(UserData userData, AnalysisContext analysisContext) {
        System.out.println(userData);
//该方法表示一行一行读取excel内容,但是它从第二行读取,第一行是表头
//读取一行数据后封装到userData对象中
    }

    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表头信息" + headMap);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

2.6调用

public class TestRead {
    public static void main(String[] args){
        //1.读取文件路径
        String fileName = "E:\\excel\\01.xlsx";
        //2.调用方法实现读取操作
        EasyExcel.read(fileName, UserData.class, new ExcelListener()).sheet().doRead();
    }
}

3redis+spring Cache

因为数据字典里的数据量过于庞大所以需要使用缓存技术

@Cacheable(value = "dict", keyGenerator = "keyGenerator")
//注@Cacheable使用springframework中的
/**
 * 表示该方法的返回值存入缓存,命名:dict
 * keyGenerator表示根据当前方法的包名、类名、方法名生成key(唯一效果)
 */



@CacheEvict(value = "dict", allEntries = true)
/**
 * 清空指定dict的缓存数据
 * allEntries=true表示清空所有缓存
 */


缓存@Cacheable

用在方法上,使用最多的缓存注解。

工作流程:先访问缓存,缓存中没有,去数据库查询,查询结果存到缓存。

根据方法对其返回结果进行缓存,下次请求时,如果缓存存在,则直接读取缓存数据返回;如果缓存不存在,则执行方法,并把返回的结果存入缓存中。一般用在查询方法上。

查看源码,属性值如下:

属性/方法名

解释

value

缓存名,必填,它指定了你的缓存存放在哪块命名空间

cacheNames

与 value 差不多,二选一即可

key

可选属性,可以使用 SpEL 标签自定义缓存的key

缓存@CachePut

一般用在添加方法上,当添加一条新数据时,该数据会同步到指定的缓存中去。

使用该注解标志的方法,每次都会执行,并将结果存入指定的缓存中。其他方法可以直接从响应的缓存中读取缓存数据,而不需要再去查询数据库。一般用在新增方法上。

查看源码,属性值如下:

属性/方法名

解释

value

缓存名,必填,它指定了你的缓存存放在哪块命名空间

cacheNames

与 value 差不多,二选一即可

key

可选属性,可以使用 SpEL 标签自定义缓存的

​​​​​​​缓存@CacheEvict

一般用在更新或删除的方法上,用于清空指定缓存。

使用该注解标志的方法,会清空指定的缓存。一般用在更新或者删除方法上。

查看源码,属性值如下:

属性/方法名

解释

value

缓存名,必填,它指定了你的缓存存放在哪块命名空间

cacheNames

与 value 差不多,二选一即可

key

可选属性,可以使用 SpEL 标签自定义缓存的key

allEntries

是否清空所有缓存,默认为 false。如果指定为 true,则方法调用后将立即清空所有的缓存

beforeInvocation

是否在方法执行前就清空,默认为 false。如果指定为 true,则在方法执行前就会清空缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值