mapper.xml

<!-- 批量新增 -->
<insert id="saveBatch" parameterType="java.util.List">
insert into t_gceb_login_log(
id ,
user_id ,
user_name ,
mip ,
jsession_id_4a ,
create_by ,
create_by_name ,
update_by ,
update_by_name ,
create_time ,
update_time ,
data_version ,
attribute1 ,
attribute2 ,
attribute3 ,
attribute4 ,
attribute5 ,
attribute6
)
values
<foreach collection="list" item="item" index="index" separator="," >
(
#{item.id},
#{item.userId},
#{item.userName},
#{item.mip},
#{item.jsessionId4a},
#{item.createBy},
#{item.createByName},
#{item.updateBy},
#{item.updateByName},
#{item.createTime},
#{item.updateTime},
#{item.dataVersion},
#{item.attribute1},
#{item.attribute2},
#{item.attribute3},
#{item.attribute4},
#{item.attribute5},
#{item.attribute6}
)
</foreach>
</insert> <!-- 批量修改 -->
<update id="updateBatch" parameterType="java.util.List">
update t_gceb_login_log
<trim prefix="set" suffixOverrides=",">
<trim prefix="userId =case" suffix="end,">
<foreach collection="list" item="item">
<if test="item.userId!=null">
when id=#{item.id} then #{item.userId}
</if>
</foreach>
</trim>
<trim prefix="attribute1 =case" suffix="end,">
<foreach collection="list" item="item">
<if test="item.attribute1!=null">
when id=#{item.id} then #{item.attribute1}
</if>
</foreach>
</trim>
</trim>
<where>
<foreach collection="list" separator="or" item="item">
id=#{item.id}
</foreach>
</where>
</update> <delete id="logBatchRemove" parameterType = "java.util.List">
delete from t_gceb_login_log
<where>
id in
<foreach collection="list" item="item" open="(" separator="," close=")" >
#{item}
</foreach>
</where>
</delete> 

注意点:批量操作也是有性能问题的,一个批次建议200条

List<List<LoginLog>> batchList = ListUtils.partition(loginLogList, 200);
for (List<LoginLog> array: batchList) {
int sum = this.sqlSessionTemplate.update("loginLog.updateBatch", array);
LOGGER.debug("批量更新记录数:{}", sum);
}

  

mybatis 批量新增-批量修改-批量删除操作的更多相关文章

  1. 17、手把手教你Extjs5(十七)模块的新增、修改、删除操作

    上节在Grid展示时做了一个金额单位可以手工选择的功能,如果你要加入其他功能,也只要按照这个模式来操作就行了,比如说你想改变金额字段的颜色.小数位数.零值是否显示.货币符号.单位显示在标题栏或者跟在金 ...

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

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

  3. MyBatis通过注解方式批量添加、修改、删除

    唯能极于情,故能极于剑 注: 本文转载于:CodeCow · 程序牛 的个人博客:http://www.codecow.cn/ 一.数据库实体DO public class User implemen ...

  4. 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作

    最近我做的一些项目,经常需要用到对应用程序的配置文件操作,如app.config和web.config的配置文件,特别是对配置文件中的[appSettings]和[connectionStrings] ...

  5. js操作select控件大全(包含新增、修改、删除、选中、清空、判断存在等)

    原文:js操作select控件大全(包含新增.修改.删除.选中.清空.判断存在等) js操作select控件大全(包含新增.修改.删除.选中.清空.判断存在等) js 代码// 1.判断select选 ...

  6. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  7. LitePal的修改和删除操作

    转载出处:http://blog.csdn.net/guolin_blog/article/details/40083685 传统的修改和删除数据方式   上篇文章中我们已经得知,SQLiteData ...

  8. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  9. Entity Framework 6 Recipes 2nd Edition(10-8)译 - >映射插入、修改、删除操作到存储过程

    10-8. 映射插入.修改.删除操作到存储过程 问题 想要映射插入.修改.删除操作到存储过程 解决方案 假设已有运动员实体模型,如Figure 10-8所示. 对应的数据库表如Figure 10-9所 ...

  10. [PHP] - Laravel - 列表、新增、修改、删除例子

    前言 Laravel默认是自带了CURD的功能,使用路由的Route::resource可以做到. 但真正的项目中,这往往不是我们所需要的.因为一个项目会有比较复杂的计算.验证等功能. 下面是对项目中 ...

随机推荐

  1. SpringBoot 上传文件如何获取项目工程路径

    上传文件时,需要将上传的文件存放于工程路径中,以便前端能够获取文件资源,那如何获取工程路径呢? //获取 SpringBoot 工程中 static 的绝对路径 String serverpath= ...

  2. Java 常见转义字符

    什么是转义符 计算机某些特殊字符是无法直接用字符表示,可以通过转义符 ( \ ) 的方式表示,也就是将原字符的含义转为其他含义. 比如,如果想要输出一个单引号,你可能会想到 char letter = ...

  3. redis的rehash过程

    在扩容和收缩的时候,如果哈希字典中有很多元素,一次性将这些键全部rehash到ht[1]的话,可能会导致服务器在一段时间内停止服务.所以,采用渐进式rehash的方式,详细步骤如下: 为ht[1]分配 ...

  4. systemverilog动态数组

  5. Docker学习(15) Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接

  6. ARM NEON指令集优化理论与实践

    ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...

  7. 循环IRNNv2Layer实现

    循环IRNNv2Layer实现 IRNNv2Layer实现循环层,例如循环神经网络(RNN),门控循环单元(GRU)和长期短期记忆(LSTM).支持的类型为RNN,GRU和LSTM.它执行循环操作,该 ...

  8. NVIDIA GPU的神经网络自动调度

    NVIDIA GPU的神经网络自动调度 针对特定设备和工作负载的自动调整对于获得最佳性能至关重要.这是一个关于如何使用自动调度器为NVIDIA GPU调整整个神经网络的资料. 为了自动调整一个神经网络 ...

  9. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  10. Single Shot Multibox Detection (SSD)实战(下)

    Single Shot Multibox Detection (SSD)实战(下) 2. Training 将逐步解释如何训练SSD模型进行目标检测. 2.1. Data Reading and In ...