若依系统导入Excel时如果有字典字段,最好加校验判断该字典字段的值是否能够匹配到,如果匹配失败证明该值填错呢,要么生成错误报告提示要么直接提示导入失败不让导入。

如果当有很多列都是字典字段时,而且Excel数据量特别大,如果用若依默认提供的方法判断,个人感觉耗时比较长,因为一个字典字段校验就得查库一次,如果能够查到就证明该填写的在该字典数据里能匹配到,查不到就证明填写有误。

    /*** 根据字典类型和字典键值查询字典数据信息* * @param dictType 字典类型* @param dictValue 字典键值* @return 字典标签*/public String selectDictLabel(String dictType, String dictValue);

于是我写了个简单判断方法

    private boolean judgeDictData(String dictType, String dictValue) {String str = iSysDictDataService.selectDictLabel(dictType, dictValue);if (StringUtils.isNull(str)) {return false;}return true;}

最后发现导入对每列校验这块特别耗时,光校验这就用了128秒

后来我想耗时的一大部分原因是这样写校验枚举字段的方法得每个字段每次都得查一遍数据库,于是我就想着干脆查一次,就是进入导入方法后就查一次,先把那张表的所有数据封装到集合里,然后再在这集合里进行筛选校验枚举字段,代码如下。

SysDictDataMapper.xml

增加查询整个表

 <select id="selectAllDictDataList" resultMap="SysDictDataResult" >select * from sys_dict_data</select>

SysDictDataMapper.java

    /*** 查询表里所有数据*/public List<SysDictData> selectAllDictDataList();

ISysDictDataService.java

    /*** 查询表里所有数据*/public List<SysDictData> selectAllDictDataList();

SysDictDataServiceImpl.java

    @Overridepublic List<SysDictData> selectAllDictDataList() {return dictDataMapper.selectAllDictDataList();}

校验方法如下:

得先查到sysDictDataList

sysDictDataList = iSysDictDataService.selectAllDictDataList();
    private boolean judgeDictData(String dictType, String dictValue) {List<SysDictData> dictDatas = sysDictDataList.stream().filter(s->s.getDictType().equals(dictType) && s.getDictValue().equals(dictValue)).collect(Collectors.toList());if (dictDatas.size()==0) {return false;}return true;}

用这个校验方法后,时间确实缩短了好多,从128秒缩短到了27秒

若依系统导入Excel时优化字典字段的校验相关推荐

  1. 实现pandas导入excel时保留公式的文本内容

    实现pandas导入excel时保留公式的文本内容 excel数据(存在公式): 直接使用pandas读取excel时,无法保留公式的文本信息: 结合使用openpyxl模块中的data_only=F ...

  2. PHPExcel导入Excel时长数字变成科学计数法调整

    PHPExcel导入Excel时长数字变成科学计数法调整 1.使用PHPExcel导入Excel表格时,长数字会变成科学计数法,表格中的数值类型为数字类型 比如450107630382345 导入打印 ...

  3. 数据库导入Excel时出现下标越界的解决办法

    数据库导入Excel时出现下标越界的解决办法 数据库导入Excel时出现下标越界的终极办法 原因 在使用的Excel不是本机制作的情况下,"下标越界"时有发生. 解决办法 1.将新 ...

  4. 关于js导入Excel时,Excel的(年/月/日)日期是五位数字的问题。以及对Excel日期存在的错误的分析和处理。

    本文目录 前言 转化的思路和对Excel中的错误的处理 最终代码 急需代码可以直接跳到最终代码~ 前言 近期实现了一个前端导入Excel的需求,然后问题就来了,Excel传来的日期是一串数字(非时间戳 ...

  5. 导入Excel时数据类型处理工具类

    在处理导入Excel功能时,取Excel中的值时需要严格按照Excel中的数据类型来取数据;因此对于此功能编写的一个功能类如下: /*** 解析Excel文件公共类 * @author zhh* @d ...

  6. plsql导入excel时无odbc importer中无dsn选项

    导入win10 plsql 导入excel ,odbc importer中没选项, 解决办法, 控制面板->管理工具->  ODBC 数据源(32 位)->系统dsn->添 ...

  7. SpringBoot+POI实现导入Excel时验证并返回错误Cell标红的文件

    场景 SpringBoot中使用POI实现Excel导入到数据库(图文教程已实践): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  8. java导入导出有版本兼容问题_java导入excel时遇到的版本问题

    java中读取excel文件时对不同的版本提供了不同的读取方法,这就要求我们在读取excel文件时获取excel文件的版本信息从而通过不同的版本去使用不同的读取方式, 在WorkbookFactory ...

  9. java excel导入 日期_java导入excel时处理日期格式(已验证ok)

    在Excel中的日期格式,比如2009-12-24将其转化为数字格式时变成了40171,在用java处理的时候,读取的也将是40171. 如果使用POI处理Excel中的日期类型的单元格时,如果仅仅是 ...

最新文章

  1. String复习笔记
  2. 机器学习系列3:能量函数分析
  3. 添加轨迹运动_时间最优轨迹(资料)
  4. MyBatis——insert并返回主键ID解决方案
  5. boost::log模块实现宽字符日志记录示例
  6. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
  7. java输入输出及文件_(java基础)Java输入输出流及文件相关
  8. ubuntu下c++中base64编解码测试和图片编解码测试
  9. 支持MYSQL的DNS服务器的搭建
  10. PHP操作Mysql疑问?
  11. 直线检测原理matlab,Hough变换 直线检测原理及其Matlab实现
  12. Python爬虫【urllib3模块】和【requests模块】
  13. 关于研发项目计划排期与项目需求延期的想法
  14. 模仿人类逻辑,首个BERT模型AI通过初二科学考试!研究人员:完成了老板遗愿...
  15. 你真的了解IP地址吗?
  16. Java函数式接口--抽象方法接口
  17. 列举图像拼接和图像融合的常用算法
  18. java实现猜数字游戏,直到猜对猜跳出
  19. OpenGL蓝宝书第九章学习笔记:片段着色器和帧缓存
  20. LCMV波束形成严谨推导深入细节

热门文章

  1. 桌面图标计算机的意义,怎样调出电脑桌面图标
  2. [Davinci Configurator 配置] 实现功能寻址不响应、关闭抑制肯定响应、NRC否定响应
  3. vi 常用命令 zz
  4. 芯片破壁者(五):Acorn和ARM所发现的移动时代
  5. linux桌面垃圾,如何从Ubuntu 18.04 LTS和18.10桌面删除垃圾箱图标
  6. DLT645-97、07协议pdf免费下载地址
  7. waveeditor中文版
  8. Keil5安装教程(C51与MDK共存)
  9. 双快门锁教程_一种双快锁体的制作方法
  10. 宝尚简讯新妖股出现,重仓干这支票!