easyexcel中Listener返回信息给Controller

easyexcel中Listener返回给Controller的信息

Listener监听器

public class ExcelListener extends AnalysisEventListener<ReadFile> {
	//调用的mapper接口,实现对数据增删改查,调用方法
    @Autowired
    YouthMapper youthMapper;
    //调用的返回错误信息类
    @Autowired
    ErrorDAO ErrorDAO;
    //存储导入的信息
    List list=new ArrayList<>();
    //需要返回的信息
    List error=new ArrayList<>();
    
    //构造函数,一定要写,将youthMapper,readFileDAOI添加到监听中
    public ExcelListener(YouthMapper youthMapper, ErrorDAO ErrorDAO) {
        this.youthMapper = youthMapper;
        this.ErrorDAO=ErrorDAO;
    }
    @Override
    public void invoke(ReadFile data, AnalysisContext context) {
        //将导入的信息都添加到list集合中
        list.add(data);
        //每MAX_LIST_SIZE操作一次,分担服务器,浏览器的负担
        if (list.size()%MAX_LIST_SIZE==0){
            saveData();
            // 存储完成清理 list
            list.clear();
        }

    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //最后处理list.size()%MAX_LIST_SIZE==0剩余的数据
        saveData();
        //传送数据库没有的学生数据
        ErrorDAO.getError(error);
    }
    //提出来的存储函数
    private void saveData() throws ParseException {
        System.out.println("========================")
        error.add("需要返回的信息");
        System.out.println("========================")
    }
}

ErrorDAO返回信息封装类

@Repository
public class ErrorDAO{
    //全局变量用来转接错误信息
    public List readFileList=new ArrayList<>();
    public List repeatList=new ArrayList<>();
    public void getReadFileError(List error) {
        readFileList.clear();
        readFileList.addAll(error);
    }
    //转接成无参数函数
    public List getReadFiles(){
        return readFileList;
    }
}

Controller控制器

public class YouthController {
    //获取Listener监听返回的信息
    @Autowired
    public ErrorDAO ErrorDAO;
    //导入数据
    @RequestMapping(value = "/read",method = RequestMethod.POST)
    @ResponseBody
    public Object readExcel(@RequestParam("readExcel") MultipartFile file) {
        try {
            //获得工作簿
            EasyExcel.read(file.getInputStream(), ReadFile.class, new ExcelListener(youthMapper,ErrorDAO)).sheet().doRead();
            //ReadFile.class实体类,也就是制作Excel实体类
            //进行读操作
            //返回数据
            List list=new ArrayList();
            //获取数据库未查询到的学生学习情况
            List errors= readFileDAO.getError();
            list.add(errors);
            return list;
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
    }

ReadFileDAO

package com.cat.youth_learning.dao;

import com.cat.youth_learning.pojo.ReadFile;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;
@Repository
public class ReadFileDAO{
    //全局变量用来转接错误信息   学生表未查到的学生
    public List<ReadFile> readFileList=new ArrayList<>();
    public List<ReadFile> repeatList=new ArrayList<>();
    public void getReadFileError(List<ReadFile> readFiles) {
        readFileList.clear();
        readFileList.addAll(readFiles);
    }
    //转接成无参数函数
    public List<ReadFile> getReadFiles(){
        return readFileList;
    }
}

你可能感兴趣的:(springboot,Java笔记,JSP,java,spring,boot)