每次上传表时,将上传的表名与以往上传的表名做对比,如果相同,则提示'表已经有记录,是否上传相同表'并结束此方法。
实现思路:
首先,每次上传表都要把表明记录一下,可以新建一个表(数据库表),专门用来存储表名。
之所以不用数据记录,是因为项目关闭,数组里的记录就空了。
然后我们分析代码:
package com.jhsoft.product.wages.controller; import com.jhsoft.product.util.ReadExcel; import com.jhsoft.product.wages.service.WorkExcelService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; @Controller @RequestMapping("/jh_product/workexcel") public class WorkExcelController extends BaseController { @Autowired private WorkExcelService workExcelService; @PostMapping("/import") @ResponseBody @CrossOrigin public AjaxResult importworkExcel(@RequestPart("file") MultipartFile file) { //创建处理EXCEL的类 ReadExcel readExcel = new ReadExcel(); //解析excel,获取上传的事件单 List<Map<String, Object>> beExamList = readExcel.getExcelInfo(file); String message = workExcelService.importworkExcel(beExamList); return AjaxResult.success(message); }
上面这个controller文件里面记录的是:
List<Map<String, Object>> beExamList = readExcel.getExcelInfo(file);工具类readExcel 获取文件(file),然后,将结果给到beExamList
这一步是获取文件,然后我们去到具体的readExcel实现类,看文件名处理过程
通过以上图片,我们知道,他记录的标题是stringCellValue,然后我们找一下标题保存到了哪里。
他放到了map集合里面,我们再找一下map集合是那个
好,到这,我们知道工具类中处理过后的标题是啥了,然后,我们去实现类impl里面将这个标题添加到数据库表(记录表名称的那个表),然后在比对每次上传的数据是否在数据库表有记录。
1.对应数据库表,添加mapper和mapper.xml文件
自动生成的代码,放进去。
然后把mapper文件清空,
把xml文件不需要的方法也可以删掉
本xml文件只保留这俩方法,一个是添加,一个查询。
xml爆红的这些都可以删掉 parameterType="TTablename" resultMap="TTablenameResult"parameterType="TTablename"
package位置
对应xml位置:
对应xml文件写mapper
2.改数据库xml查询语句
工具类中获取文件名全称,
接着往下看方法:
接着去实现层,也就是impl
@Autowired private TTablenameMapper tTablenameMapper;
String filename ="";
filename = String.valueOf(map.get("filename")); int num=tTablenameMapper.selectTTablenameList(filename); if(num>0){ return "此文件名已被导入,请更换文件名"; }
然后在循环外,加入一条往数据库添加的语句。
tTablenameMapper.insertTTablename(filename);