思路:
在controller定义一个map,将map传入excel监听器,在监听器中处理excel的数据,读取到某一行出现错误就将错误提示信息存入map并抛出一个异常给service。在service方法上开启事务,并将异常出实现数据回滚,controller将异常try..catch,在catch中返回map
controller:
思路:在service做数据回滚,在控制层做错误提示信息返回,将map到service
参数说明:
outmap:用来存放返回给前端的提示信息
file:excel文件
Service:
思路:添加@Transational注解,将map传入监听器,监听器抛出异常就回滚数据。
说明:我在监听器中自动装配不到持久层roleDao,所以在监听器中重写构造方法来接收。你们可以装配到就不用我这么麻烦了。
参数说明:
in:Excel文件流
ExcelModel.class:Excel对应的实体类
RoleListener:监听器(数据的写入都在监听器中完成)
监听器:
说明:代码太多,只截关键部分,明白那个意思就行
参数说明:
ExcelModelVo:excel对应的实体类,一个实体类代表一行数据
analysisContext:每行数据的基本信息,例如可以获取当前读取的行数