【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(三)

【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(一)
【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(二)
【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(三)
【效果演示】:JavaWeb毕业设计项目-足球队管理系统(四)引入Excel_To_DB项目+源码
【码云地址】:https://gitee.com/ydc_coding

ExcelModel.java:

package com.ydc.excel_to_db.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Max;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * @Description: 为了方便扩展,这里的字段命名规则为col[列]+1[列数]
 * 例如:col1代表的就是第一列的数据,通过@Excel(name=?)注解进行区分
 * @Author: 杨东川【http://blog.csdn.net/yangdongchuan1995】
 * @Date: Created in  2018-2-6
 */
@Data
public class ExcelModel {
   
    // 官方文档 http://easypoi.mydoc.io/
    @Excel(name = "序号")
    @NotBlank(message = "该字段不能为空")
    @Max(value = 1000)
    private String col1;
    @Excel(name = "姓名")
    @Pattern(regexp = "[\\u4E00-\\u9FA5]{2,5}", message = "姓名中文2-5位")
    private String col2;
    @Excel(name = "性别")
    private String col3;
    @Excel(name = "出生年月", format = "yyyy.MM.dd")
    private Date col4;
    @Excel(name = "民族")
    private String col5;
    @Excel(name = "籍贯")
    private String col6;
    @Excel(name = "文化程度")
    private String col7;
    @Excel(name = "参工时间", format = "yyyy.MM")
    private Date col8;
    @Excel(name = "政治面貌")
    private String col9;
    @Excel(name = "职务")
    private String col10;
    @Excel(name = "现处室时间", format = "yyyy.MM")
    private Date col11;
    @Excel(name = "任现职位时间", format = "yyyy.MM")
    private Date col12;
    @Excel(name = "任现职级时间", format = "yyyy.MM")
    private Date col13;
    @Excel(name = "职称")
    private String col14;
    @Excel(name = "执业资格")
    private String col15;
    @Excel(name = "进局时间", format = "yyyy.MM")
    private Date col16;
    @Excel(name = "实务导师")
    private String col17;
    @Excel(name = "备注")
    private String col18;

    public String getCol2() {
        return col2;
    }
}

说明:
- 这里使用了lombok的@Data注解与easypoi的@Excel注解,还有一些其他格式校验的注解。
- 这里我把字段名设置命名规则设置为col[列]+1[列数],例如:col1代表的就是第一列的数据,通过@Excel(name=?)注解进行区分。

为什么不直接写成例如姓名-username,性别-sex这类对应的中文含义的英文字母呢?

  • 这是因为考虑到导入的数据是可变的,有可能这次需要将“全市审计人员花名册”导入数据库,下次就变换成将“审计机关全覆盖情况”导入数据库。
  • 与其每次变动都更改字段名不如直接把字段名按一定规则设置好,后期只需要通过改变@Excel注解中的值就可以了,此外对应的Mapper中的sql语句也只需要更改操作对应数据库表的字段名即可。

Lombok与EasyPoi环境依赖:

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- easypoi -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.0.3</version>
        </dependency>

下面开始贴从上传Excel至返回第一层操作结果的代码及业务逻辑说明(Excel数据格式校验结果)
importExcel.html中上传方法js:

    layui.use('upload', function () {
   
        var $ = layui.jquery
            , upload = layui.upload;
        //拖拽上传
        upload.render({
            elem: '#test10'
            , url: '/doImport/'
            , method: 'post' //默认就是post
            , accept: 'file'
            , size: 20 * 1024
            , before: function (obj) {
    //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
                layer.load(); //上传loading
            }
            , done: function (res, index, upload) {
   
                layer.closeAll('loading'); //关闭loading
                //假设code=0代表上传成功
                if (res.code == 0) {
                    // 0 : 上传文件格式通过
                    if (res.data.code == 0) {
                        //询问框
                        layer.confirm(res.data.msg, {
                            icon: 6,
                            title: '恭喜您,数据上传成功!',
                            btn: ['需要', '不需要'] //按钮
                        }, function () {
   
                            checkUndoSize();
                        }, function () {
   
                            layer.confirm('真的不需要查看数据同步结果吗?
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值