栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

excel大数据量插入-svg解析插入

excel大数据量插入-svg解析插入

pom:
        
            com.opencsv
            opencsv
            4.6
        
CsvPosition:
package com.sdkj.exceltest.annotation;

import java.lang.annotation.*;


@documented
@Target(ElementType.FIELD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface CsvPosition{

    //索引位置
    public int index() default 0;

}
CsvUtils:
package com.sdkj.exceltest.utils;

import com.sdkj.exceltest.annotation.CsvPosition;

import java.lang.reflect.Field;
import java.lang.reflect.Method;


public class CsvUtils {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static Object evalField(Object obj,String [] str) throws Exception {

        //判断实体类内容是否为空
        if(null == obj){
            return "";
        }

        //获取实体类对象class
        Class objClass = obj.getClass();

        //获取类声明的变量
        Field[] objFieldArray = objClass.getDeclaredFields();

        //进行比对处理
        for (int i = 0; i < objFieldArray.length; i++) {

            Field objField = objFieldArray[i];

            //获取对象的自定义注解内容
            CsvPosition csvPosition = objField.getAnnotation(CsvPosition.class);

                //判断变量是否有自定义注解
                boolean flag = objField.isAnnotationPresent(CsvPosition.class);

                    if(flag){

                        //获取变量名称
                        String fieldName = objField.getName();

                        //获取变量的get set方法
                        String setMethodName = "set"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);

                        Field field = obj.getClass().getDeclaredField(fieldName);
                        Method setMethod = obj.getClass().getDeclaredMethod(setMethodName,
                                field.getType());
                        setMethod.invoke(obj, str[csvPosition.index()]);

                    }
        }

        return obj;
    }

}
ExcelTest:
package com.sdkj.exceltest.entity;

import com.sdkj.exceltest.annotation.CsvPosition;
import lombok.Data;

import java.io.Serializable;

@Data
public class ExcelTest implements Serializable {

    @CsvPosition(index = 0)
    private String id;

    @CsvPosition(index = 1)
    private String jgmc;

    @CsvPosition(index = 2)
    private String gmc;

}
test:
 @Test
    public void test5() {
        Integer SIZE = 1000;
        String path = "D://test001.csv";

        try {
            DataInputStream in = new DataInputStream(new FileInputStream(new File(path)));

            CSVReader csvReader = new CSVReader(new InputStreamReader(in, "utf-8"), CSVParser.DEFAULT_SEPARATOR,
                    CSVParser.DEFAULT_QUOTE_CHARACTER, CSVParser.DEFAULT_ESCAPE_CHARACTER, 2);

            String[] strs;

            List list = new ArrayList<>();

            int i = 0;
            while ((strs = csvReader.readNext()) != null) {

                ExcelTest excelTest = new ExcelTest();
                excelTest= (ExcelTest) CsvUtils.evalField(excelTest,strs);
                list.add(excelTest);
                i++;
                // 当 list 到达单批次最大数量后,执行保存数据操作,并清空list
                if (i==SIZE){
                    excelTestService.batchAdd(list);
                    list.clear();
                    i = 0;
                }
            }

            // 跳出循环后,判断里面有没有数据 防止有数据遗漏
            if (null!=list&&list.size()>0){
                excelTestService.batchAdd(list);
            }
            // 关闭流
            csvReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号