一、mybatis中的批量操作

   批量操作核心就是一次传入多个数据然后进行相关操作,增删改查中掌握其中一个其他的也不成问题

1、最新在做的短信平台,要批量插入群发的短信记录:

当然批量操作还有:批量删除,更新,插入,更新。

  1. 批量删除:

    <delete id= "deleteBatchByXXX" parameterType= "list">

    delete from 表名 where groupon_id in

    <foreach collection="list" item= "item" index ="index"

    open= "(" close =")" separator=",">

    #{item}

    </foreach >

    </delete >

    注意,foreach是循环,用来读取传入的list参数。批量处理是parameterType的类型必须要注意。foreach标签中的collection属性表示传入的是什么集合类型。item表示的是集合中的一个量类似于

    List<String>list;

    for(String str:list){

    ……

    }

    item就相当于str的作用,用来遍历collection。index就是集合的索引。open表示标签以什么开始,close表示标签以什么结束。seprator表示元素之间的间隔。

  2.  

    批量插入:

    <insert id="insertBatch" >

    insert into 表名 ( uid, groupon_id, create_time, receive_time) values

    <foreach collection="list" item= "item" index ="index" separator=",">

    (#{item.uid,jdbcType=BIGINT}, #{item.grouponId,jdbcType=BIGINT},

    #{item.createTime,jdbcType=INTEGER}, #{item.receiveTime,jdbcType=INTEGER})

    </foreach >

    </insert>

    用法基本同批量删除,这里需要注意item.XXX表示获取该对象的XXX属性。

  3.  

    批量更新:

    <update id= "updateSubmitTimeByUids" parameterType= "map">

    update 表名

    set submit_time = #{submitTime,jdbcType=BIGINT} where uid in

    <foreach collection="list" item= "uid" index ="index"

    open= "(" close =")" separator=",">

    #{ uid}

    </foreach >

    </update >

    用法和之前的基本相同,但是需要注意传入的参数是map类型。

  4.  

    批量查询:  <select id="selectBySomePoiIds" resultType="list" parameterType="Java.util.Map">      SELECT <include refid="Base_Column_List" /> FROM 表名      WHERE poi_id in        <foreach collection="poiIds" item="poiId" index="index" open="(" close=")" separator=",">            #{poiId}        </foreach>          AND pass_uid = #{passUid}          <if test="status != null">            AND status = #{status,jdbcType=BIGINT}           </if>  </select>

    注意标签的用法和上面的大同小异,都是通过传入一个集合对象来进行值得批量查询。

MyBatis学习总结_10_批量操作的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  3. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  4. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  5. (原创)mybatis学习一,夯实基础

    一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

随机推荐

  1. Java程序员面试中的多线程问题

    很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework),理解核心线程概念时,娴熟的实际经验是必需的.这篇文章收集了Java线程方面 ...

  2. nodeJs爬虫获取数据

    var http=require('http'); var cheerio=require('cheerio');//页面获取到的数据模块 var url='http://www.jcpeixun.c ...

  3. DataTable分组归类

    我们在做项目的时候,经常需要根据表或DataTable中某些字段来归类,为此就写出以下方法,帮组需要的人. #region 对DataTable进行分组 + public void GroupData ...

  4. Careercup - Microsoft面试题 - 5752271719628800

    2014-05-10 20:31 题目链接 原题: Given an array of integers and a length L, find a sub-array of length L su ...

  5. MySQL数据库远程连接开启方法

    有时候需要远程连接mysql数据库,默认是不可以的,可以参考下面的方法,解决下. 1.登陆自己机器的MySQL数据库:mysql -uroot -p密码 设置root用户可以任意IP访问,代码如下(可 ...

  6. 删除vlan的方法

    方法一: 删除VLAN     先删接口     switch(config)#int ra f0/1 - 5     switch(config-if)#no switchport access v ...

  7. 802.11 wireless 1(主要还是学习ccna wireless的体系)

    802.11 wireless 1(主要还是学习ccna wireless的体系)ISM频带(ISM band starts early 1990s)900MHZ   2.4GHZ   5GHZ 四种 ...

  8. Matlab计算矩阵和函数梯度

    一.差分与微分 我自己的理解. 二.求解 2.1 矩阵 这就是matlab的计算结果.太小的话放大些: c = 4 5 9 7 2 1 5 2 6 >> [x,y]=gradient(c) ...

  9. Leetcode#92 Reverse Linked List II

    原题地址 第一步,找到将要翻转的位置,记录翻转部分前一个节点(prev) 第二步,翻转,记录翻转完成后这部分的首(reverseHead)和尾(reverseTail),以及翻转部分之后的一个节点(p ...

  10. 来自平时工作中的javascript知识的积累---持续补充中

    ① SeaJs和RequireJS最大的区别 解惑:来自豆友 ② javascript中如何判断undefined var exp = undefined; if (exp === undefined ...