简单描述:做开发的时候,会遇到一次插入好多条记录,怎么做好呢?

解决思路:循环insert啊!  哪凉快那呆着去←!←  这样会增加数据库开销的,当然不能这么干了,要在sql上下功夫。看代码,一下就明白了

代码

private void saveRoleOrgRes(String resIds,OhSysPriRoleOrgVo roleOrgVo) throws Exception {  //service层代码
if(Tools.notEmpty(resIds)){
List<OhSysPriRoleOrg> list = new ArrayList<>();
String[] resIdArr = resIds.split(","); //剪切id字符串
for (String resId: resIdArr) {
OhSysPriRoleOrg roleOrg = new OhSysPriRoleOrg();
roleOrg.setRoleOrgId(UuidUtil.get32UUID());
roleOrg.setOrgId(roleOrgVo.getOrgId());
roleOrg.setResId(resId); //为每个对象的id赋值
roleOrg.setRoleId(roleOrgVo.getRoleId());
roleOrg.setPriOrgLevel(roleOrgVo.getOrgLevel());
list.add(roleOrg);
}
dao.save("XXXXRoleOrgMapper.insert",list);
}
}
mapper的sql:
<insert id="insert" parameterType="java.util.List">
insert into <include refid="tableName"></include>
(
<include refid="Field"></include>
) values
<foreach collection="list" item="item" index="index" separator=",">
(
<include refid="FieldValue"></include>
)  
</foreach>
</insert>
 <sql id="FieldValue">  
#{item.xxxOrgId},
#{item.xxxId},
#{item.xxId},
#{item.xxxLevel},
#{item.xxxParentId}
</sql>

总结:这就是sql语法灵活运用的表现啦,对list中的每个对象加上foreach循环,但是 要特别的注意,映射取值的时候里边一定要放item,否则的话会mybatis绑定异常

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'xxxId' not found.Available parameters are [ xxxId ,list ]。

mabatis的批量新增sql 初级的 初级的 初级的的更多相关文章

  1. Java拼接批量新增SQL语句

    StringBuffer addSql = new StringBuffer(1000); int batchSize = 50; int executeTime = 0; SimpleDateFor ...

  2. springboot项目实现批量新增功能

    这个困扰我一整天东西,终于解决了. 首先是mybatis中的批量新增sql语句. 注意:这里我给的是我需要新增的字段,你们改成你们需要的字段. <insert id="insertBa ...

  3. mybatis,批量新增、修改,删除

    转载自:http://blog.csdn.net/sanyuesan0000/article/details/19998727 最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的 ...

  4. MyBatis批量新增和更新

    之前有开发任务一个接口里面有大量的数据新增和更新操作,导致十分缓慢.使用了批量操作之后速度有明显提升,几乎百倍千倍的速度提升. 博主之前统计过,通过普通接口一次数据库插入大概需要200ms,对于大量新 ...

  5. mybatis学习之路----mysql批量新增数据

    原文:https://blog.csdn.net/xu1916659422/article/details/77971867 接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到. ...

  6. 使用EF批量新增数据十分缓慢

    使用EF来批量新增数据,发现效率非常的差,几千条数据时甚至需要几分钟来执行,迫于无奈使用sql来执行了. 今天偶然看到一篇关于EF的文章,才发觉原来是自己对EF不够了解的原因. 一般新增时我们是将所有 ...

  7. oracle批量新增更新数据

    本博客介绍一下Oracle批量新增数据和更新数据的sql写法,业务场景是这样的,往一张关联表里批量新增更新数据,然后,下面介绍一下批量新增和更新的写法: 批量新增数据 对于批量新增数据,介绍两种方法 ...

  8. MP实战系列(十九)之批量新增

    批量操作在实际开发中也应用非常多,例如批量下发优惠券.批量添加用户等. 以MyBatis为例,通常实现批量操作,有这么几种方式? 第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的 ...

  9. EntityFramework进阶(四)- 实现批量新增

    本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处 我们可以结合Ado.Net的SqlBulkCopy实现SqlServer数据库的批量新增,其他类型的数据库的批量 ...

随机推荐

  1. [国家集训队] Crash 的文明世界

    不错的树形$ DP$的题 可为什么我自带大常数啊$ cry$ 链接:here 题意:给定一棵$ n$个节点的树,边权为$ 1$,对于每个点$ x$求$ \sum\limits_{i=1}^n dist ...

  2. Spring 源码分析 spring-core 篇

    先来看下 spring-core 的包结构 总共有6个模块,分别是 asm.cglib.core.lang.objenesis.util asm包: 用来操作字节码,动态生成类或者增强既有类的功能.主 ...

  3. Django REST Framework API Guide 04

    本节大纲 1.serializers 1.Serializers Serializers允许复杂的数据,像queryset和模型实例转换成源生的Python数据类型.从而可以更简单的被渲染成JSON, ...

  4. Print Article(斜率DP入门+单调队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3507 题目大意:给你n个数,然后问你怎么分割当前的这n个数位那几组,使得每一组的权值加起来最大.每一组 ...

  5. Flask里面session的基本操作

    #session是依赖于flask的session模块 #如果想使用session模块,在配置里必须定义sessionkey from flask import Flask,session #建立对象 ...

  6. Javascript - ExtJs - 整合百度文章编辑器

    ExtJs - 整合百度文章编辑器(ExtJs UEditor) 第一步:去官网下载最新版本的UEditor,UEditor下载. 第二步:在编辑器根目录创建一个Extjs-Editor.js,录入以 ...

  7. 自动安装gulpfile中所有依赖的模块

    在gulpfile.js中定义任务的时候,需要引用不同的模块,这些模块需要使用 npm install --save-dev 命令进行安装,非常的繁琐.可以使用一个名为gulpfile-install ...

  8. 1173 - The Vindictive Coach

    题目大意:n个不同身高的队员和教练的按照身高排成波浪形……每个人按照身高由低到高编号,其中第m个是教练,他必须在第一个,如果条件允许,排第二的要比m低,如果条件不允许,即其余人都比教练高,则要让差距尽 ...

  9. CentOS 7 安装配置 MySQL

    https://blog.imzhengfei.com/centos-7-an-zhuang-pei-zhi-mysql/ MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前 ...

  10. 数字图像处理的Matlab实现(3)—灰度变换与空间滤波

    第3章 灰度变换与空间滤波(1) 3.1 简介 空间域指的是图像平面本身,这类方法是以对图像像素直接处理为基础的.本章主要讨论两种空间域处理方法:亮度(灰度)变换与空间滤波.后一种方法有时涉及到邻域处 ...