记录一下项目中Mybatis实现批量插入数据的操作

来源:互联网 发布:美工刀片生锈了怎么办 编辑:程序博客网 时间:2024/06/02 05:53

long start1 = System.currentTimeMillis();
List<String[]> field_list = new ArrayList<String[]>();
List<DNA_Data> list = new ArrayList<DNA_Data>();
// 对上传的文件进行解析
int n = GetSJ_Info.readTxtFile(filepath, field_list);
long end1 = System.currentTimeMillis();
log.debug("read time sum: " + (end1 - start1));
// i为第几行
long start = System.currentTimeMillis();
// 将解析后的数据插入到sj_info数据库中
boolean add = false;
for (int i = 0; i < n; i++) {
//这里的对象需要放在for循环里面
DNA_Data data1 = new DNA_Data();
data1.setSample_file(field_list.get(i)[0]);
data1.setSample_id(field_list.get(i)[1]);
data1.setSj_info(field_list.get(i)[2]);
data1.setLoca(field_list.get(i)[3]);
data1.setGenotype1(field_list.get(i)[4]);
data1.setGenotype2(field_list.get(i)[5]);
// add = dataService.addDNA(data1);
//将对象添加到集合中
list.add(data1);
}
// 批量插入数据库
add = dataService.insertMult(list);
long end = System.currentTimeMillis();


log.debug("insert time sum: " + (float) ((end - start) / 1000) + "s");// 这里时间太 长了,需要做到批量处理,最终时间是0.05s


下面贴上XXXMapper.xml代码

<!-- 批量插入(新增) -->
<insert id ="insertMult" parameterType="java.util.List" >
              <selectKey resultType ="java.lang.Integer" keyProperty= "id"
                   order= "AFTER">
                 SELECT LAST_INSERT_ID()
             </selectKey >
          insert into sj_info (sample_file, sample_id, sj_info, loca,genotype1,genotype2) values
             <foreach collection ="list" item="item" index= "index" separator =",">
                (#{item.sample_file},#{item.sample_id},#{item.sj_info},#{item.loca},#{item.genotype1}, #{item.genotype2})
             </foreach >
      </insert >

在此记录一下,也给跟我一样不会的小白学习一下

原创粉丝点击