优质文章,第一时间送达
简介:
项目要求有excel文件上传这个功能,由于这个功能十分常见所以公司也有这个功能的相关模块来处理,只是接触了springboot有一段时间了,所以想着自己利用springboot和mybatis来实现一下这个功能,算是对基础知识的巩固吧。
项目配置:Springboot,mybatis,POI,mysql,thymeleaf
项目目录结构:
一、导入相关包——POM配置
二、配置文件——数据库相关配置
1、application.yml文件
2.创建数据表语句:
三、前端页面(templates下的index.html页面)
四、Controller层
Controller层需要一个配置一个loadPage转到上传文件的界面
五、service层
service层是文件上传的核心部分,需要对excel文件进行解析并提取需要上传至数据库的部分,有的项目对上传文件需要的是全部列都上传,有的需求则是只需要将表中的某几列导入数据库,因此sevice层还需要对此做相关配置。在本demo中本人采取的是比较笨的方法来处理全部上传和部分上传,利用一个int数组(resultCell)来保存需要上传列的序号,从0开始计数,将excel表中的所有列来与之匹配得到最后结果集,这样做的好处是之后要修改上传的列时只需要修改int数组的值即可。
六、mybatis Mapper映射文件
本demo中测试的是部分上传(int[] resultCell = new int[];),因此数据库语句只插入部分列,如果您有其他的需求,可以先修改数组resultCell的值,但请注意数组resultCell的长度不应该超过上传文件的总列数,可以对resultCell数组进行一次判断再做处理,最后修改sql语句即可,其他部分不用做修改。
七、其他帮助类
1.excel文件映射类,即您要上传的文件的列,本demo中的文件类:
2. 统一返回结果类,定义返回给前端的统一的结果类,导入成功或失败,返回内容和返回数据
八、springboot启动类:
@MapperScan注解可以指定要扫描的Mapper类的包的路径
九、点击上传后返回的结果页面(thymeleaf)
返回结果由controller层定义
代码示例中没有贴入Service层和Dao层的接口,上传的测试文件也没有贴出,完整的demo可以通过这个路径来进行下载:https://github.com/xiBei-luo/JAVA/tree/master/fileimport
本demo是一个很简单的小例子,但是兼顾了前端、服务层、数据库持久层,服务层在解析excel时借助了POI框架,由于本人能力有限,其中使用了很多的for循环和判断,性能上可能达不到有些项目的需求,比较适合新手学习和巩固,如果您有更好的想法和思路欢迎私信或者留言区多多指教,如果您对此例子有任何问题也欢迎评论和私信,我会尽我所能为您解惑。
温暖提示
推荐案例
领取专属 10元无门槛券
私享最新 技术干货