Mybatis 批量添加,批量更新
此篇适合有一定的mybatis使用经验的人阅读.
一.批量更新
为了提升操作数据的效率,第一想到的是做批量操作,直接上批量更新代码:
<update id="updateBatchMembers" parameterType="list">
update crm_member
<trim prefix="set" suffixOverrides=",">
<trim prefix="dept_id =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.deptId!=null">
when id=#{i.id} then #{i.deptId}
</if>
</foreach>
</trim>
<trim prefix=" sys_user_id =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.sysUserId!=null">
when id=#{i.id} then #{i.sysUserId}
</if>
</foreach>
</trim> <trim prefix="public_area_id =case" suffix="end," >
<foreach collection="list" item="i" index="index">
<if test="i.publicAreaId!=null">
when id=#{i.id} then #{i.publicAreaId}
</if>
</foreach>
</trim>
</trim>
where
<foreach collection="list" separator="or" item="i" index="index" >
id=#{i.id}
</foreach>
</update>
生成的sql语句
update
crm_member
set
dept_id =case
when id=? then ?
when id=? then ?
when id=? then ?
when id=? then ?
end,
sys_user_id =case
when id=? then ?
when id=? then ?
when id=? then ?
when id=? then ?
end,
public_area_id =case
when id=? then ?
when id=? then ?
when id=? then ?
when id=? then ?
end
where
id=?
or id=?
25 or id=?
or id=?
27 or id=?
二.批量添加
批量添加在做大量数据插入到mysql时,效率相对单条遍历插入大大提高;
但是数据是基于数据库层面做的约束的话,在插入的数据中有一个数据有误,整个批量操作全部回滚;
适用场景:数据迁移时使用.
<insert id="batchInsertMember" parameterType="java.util.List">
insert into crm_member(
id,
name,
type,
phone,
link,
)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id},
#{item.name},
#{item.type},
#{item.phone},
#{item.link}
)
</foreach>
</insert>
生成对应的sql
insert into
crm_member (
id,
name,
type,
phone,
link
)
values
(?,?,?,?,?),
(?,?,?,?,?),
(?,?,?,?,?),
(?,?,?,?,?)
Mybatis 批量添加,批量更新的更多相关文章
- Mybatis批量添加、更新小结
虽然是很基础的东西,不过难免会忘记,所以写个笔记巩固一下,顺便分享. 实体类: @Data public class EventOrder { private Long id; private ...
- sequelize 批量添加和更新数据 bulkCreate
sequelize提供了批量插入数据的方法:Model.bulkCreate([…object]). 例如: let updatePhone = [{userName: '李白‘},{userNam ...
- SQL批量添加,更新,删除
SQL语句: 存储过程: 代码: 这里说的是关于SQL的批量操作数据. 需要准备: 三层框架:利用 动软代码生成器(可以快速生成增删改查) 生成三层 Model,BLL,Dal ①DbHelpeSQL ...
- MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...
- 【mybatis】之批量添加
mybatis批量添加xml <insert id="batchCreate"> INSERT INTO `roomer` (`order`,name,idCard,m ...
- ado.net 批量添加 更新 删除
自曾列就别往下看 别折腾了 使用 SqlBulkCopy ,dataTable 必须跟sql里面的表字段完全一样 下面在sqlserver中演示 mysql 请google MySqlBulkLo ...
- mybatis 框架 的应用之二(批量添加、实现分页查询)
lf-driver=com.mysql.jdbc.Driver lf-url=jdbc:mysql://localhost:3306/test lf-user=LF lf-password=LF &l ...
- Sql批量添加,批量查询,批量删除,批量修改。mybatis都有对应标签
Sql批量添加,批量查询,批量删除,批量修改.mybatis都有对应标签
- mybatis批量新增或更新
mysql中在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE时,向数据库中插入一条记录: 若插入数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作(UPDA ...
随机推荐
- vue 中 vue-router、transition、keep-alive 怎么结合使用?
<transition :name="name" mode="out-in" name="fade"> <keep-ali ...
- java上传excel到后台解析入库
背景:最近需要做一个excel模板导入的功能,以便用户可以自己增删改查数据,当然,只有特别的用户才能有此权限,捋了捋思路,还是从前端写起 实现: 页面最后的效果如下,可以自己修改,删除,导入导出数据, ...
- 网络协议 15 - P2P 协议:小种子大学问
[前五篇]系列文章传送门: 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准 网络协议 11 - Socket 编程(下):眼见为实耳听为虚 网络协议 12 - HTTP 协议: ...
- Spring之旅第一篇-初识Spring
一.概述 只要用框架开发java,一定躲不过spring,Spring是一个轻量级的Java开源框架,存在的目的是用于构建轻量级的J2EE应用.Spring的核心是控制反转(IOC)和面向切面编程(A ...
- MaterialCalendarDialog【Material样式的日历对话框】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Material样式的日历对话框 前提条件:Activity界面必须继承FragmentActivity或者其子类(比如AppCom ...
- Java中的基本类型转换,数据溢出原理
java中的数据类型 java是一种强类型语言,在java中,数据类型主要有两大类,基本数据类型和引用数据类型,不同的数据类型有不同的数据存储方式和分配的内存大小. 基本数据类型中,各数据类型所表示的 ...
- .NET Core 使用NLog日志记录
前言 每个项目都会需要使用到日志功能,这对于项目上线后 出现的bug异常,能及时定位和便于后期错误分析.那我们今天来看看在.NET Core中如何使用NLog日志. NLog 什么是NLog呢? NL ...
- Linux文本三剑客超详细教程---grep、sed、awk
awk.grep.sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一.三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂.grep更适合单 ...
- Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信
背景 前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信. 比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么 ...
- sql字符串分割扩展方法
可编程性—表值函数 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[Split] ( @RowData ...