一 .思路

1.首先创建一个实体类(TestEntity),对应批量保存的一条数据

2.Controller获取前台传递的数据(是Map列表,即代码中的paramMapList)

3.Service对Map列表进行处理(set给实体类赋值),得到实体类列表

4.把实体类列表传给sql

总结一句话,就是把实体类列表传至mybatis,用sql语句保存。

二 .代码实现

1.实体类

public class TestEntity implements Serializable{private String column1;private String column2;private String column3;private String column4; /**set,get方法**/}

2.Service(因获取前台数据方法多样,此处省略Controller,参数是Controller传递来的Map列表)

Map列表转化为实体列表

public Object batchInsert (List<Map<String, Object>> paramMapList) throws Exception{List<TestEntity> paramObjList=new ArrayList();for(int i=0;i<paramList.size();i++) {TestEntity obj=new TestEntity();obj.setColumn1(paramMapList.get("column1").toString());obj.setColumn2(paramMapList.get("column1").toString());obj.setColumn3(paramMapList.get("column1").toString());obj.setColumn4(paramMapList.get("column1").toString());        paramObjList.add(obj);}return service.save("testBatchSaveMapper.batchSave", paramObjList);}

3.MyBatis的xml文件sql语句如下:

 <!-- 批量保存sql --><select id="batchSave" parameterType="java.util.List" useCache="false">INSERT INTO test_table( column1,column2,column3,column4,                                        ) VALUES <foreach collection="list"  index="index" item="item" separator=",">(        #{item.column1},#{item.column2},#{item.column3},#{item.column4},                    )</foreach>   </select>

注:

1)虽然是批量“插入”,但是用的标签是<select>!

2)VALUES后面利用<foreach>对传进来的List进行遍历:

①collection为“被循环或遍历的数组”,这个属性是必须且很容易出错的,一般批量保存都是“list”,除此之外还有可能是“array”,map的键名等情况

②index标志循环位置,简单地说就是这是第几次循环,注意它的值是从0开始的!

③item是当前循环的对象别名,里面出现的list中的值一定要用item.才可以,没有item则会报错,说字段不存在滴

④如果我想在插入时给插入的数据一个自增字段(当然,数据库中对该字段没有特殊要求),可以看下扩展~

三.扩展——批量插入加入固定格式的自增主键

 <!-- 批量保存sql --><select id="batchSave" parameterType="java.util.List" useCache="false">INSERT INTO test_table(                          id,                     column1,column2,column3,column4,                                       ) VALUES <foreach collection="list"  index="index" item="item" separator=",">(          (SELECT RIGHT(CONCAT('0000',(IFNULL(max(id),0)+1)),4) FROM test_table AS id),#{item.column1},#{item.column2},#{item.column3},#{item.column4},                  )</foreach>   </select>

较之前的代码,区别就是#{item.column1}前面加上一句

insert加了id,value多加了以下:

(SELECT RIGHT(CONCAT('0000',(IFNULL(max(id),0)+1)),4) FROM testTable AS id)

注意这里我们存到数据库的格式就是0001,0002,.....9999这样的。注意当前列在数据库中如果用int类型是0001会变成1,如果用varchar(4)类型但是仅靠max(id)而没有RIGHT(STR,4)这样的操作则超过10会出错,因为字符串比对从第一位开始,如果9和10比,第一位分别是9和1,则取出的值就是9了~

MyBatis批量保存数据相关推荐

  1. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  2. Jquery Easy UI Datagrid 上下移动批量保存数据

    DataGrid with 上下移动批量保存数据 通过前端变量保存修改数据集合,一次性提交后台执行 本想结合easyui 自带的$('#dg').datagrid('getChanges'); 方法来 ...

  3. Mybatis批量更新数据

    Mybatis批量更新数据 第一种方式 [html] view plaincopy print? <update id="updateBatch" parameterType ...

  4. oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA

    [数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...

  5. mybatis批量更新数据三种方法效率对比

    探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数  &allowMultiQuer ...

  6. mybatis批量更新数据三种方法

    具体的可以参考下面链接: ​​​​​​mybatis批量更新数据三种方法效率对比_PreciousLife的博客-CSDN博客_mybatis 批量更新 此处说明下,若是使用for循环遍历方式,来生成 ...

  7. list mybatis批量保存_mybatis 批量将list数据插入到数据库的实现

    随着业务需要,有时我们需要将数据批量添加到数据库,mybatis提供了将list集合循环添加到数据库的方法.具体实现代码如下: 1.mapper层中创建 insertForeach(List < ...

  8. list mybatis批量保存_如何实现mybatis批量将list数据插入到数据库

    如何实现mybatis批量将list数据插入到数据库 发布时间:2020-07-06 14:27:59 来源:亿速云 阅读:66 作者:清晨 小编给大家分享一下如何实现mybatis批量将list数据 ...

  9. Mybatis批量插入数据的两种方式

    总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统. 从其它系统定时或者人工同步大批量数据到系统. 程序自身的某些算法执行时会生成大批量数 ...

最新文章

  1. ajax对服务器路径请求
  2. 从源码理解Redux和Koa2的中间件机制
  3. LinkdedList
  4. 清除WIN7桌面背景历史记录
  5. php 百家姓,最新“百家姓”排名
  6. JVM内存设置参数分析
  7. linux禅道在线迁移,禅道从windows迁移到linux
  8. 2021年安全员-C证(陕西省)考试总结及安全员-C证(陕西省)模拟考试系统
  9. 建立自己的手写笔画图案
  10. Latex 数学符号--双括号
  11. 切切切词!新词发现算法TopWORDS的原理及实现|实在智能AI+RPA学院
  12. 【opencv初学者】2、视频的读取
  13. 毕设-基于Javaweb药品销售管理系统
  14. 计算机网可靠性,计算机网络可靠性分析
  15. 计算机网络笔试牛客网,招银笔试
  16. CI 9.7-叠罗汉
  17. AUTOSAR (JASPAR)FVM Introduction
  18. 2023年特斯拉新能源汽车核心部件解密
  19. HTTP代理IP的含义 HTTP代理IP如何使用?
  20. Codeforces 1479 D Odd Mineral Resource

热门文章

  1. hive金额怎么转换千位分隔符_sql 数据转换 千位分隔符
  2. HTML技能点--表单enctype属性解释
  3. 为什么智能家居总是被说没卵用?
  4. php oauth2 认证,laravel之passport oauth2认证之授权码详解
  5. 中国数控水刀切割机市场趋势报告、技术动态创新及市场预测
  6. 测试幼儿园指南纲要的软件,幼儿《指南》与《纲要》
  7. 做下属的精神领袖——独具魅力的领导能让人追随
  8. 更新Edge后百度网盘找不到倍速看这里
  9. 二手房 房产 交易税 相关问题 总结
  10. 【二进制枚举】【dfs暴搜】