一、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. UITableView的常用属性和cell的内存优化

    UITableView的常用属性: 分割线颜色设置: 1> 设置separatorStyle: 分割线的颜色 方法:tableView.separatorStyle = UITableViewC ...

  2. Careercup - Google面试题 - 4877486110277632

    2014-05-08 05:16 题目链接 原题: Given a circle with N defined points and a point M outside the circle, fin ...

  3. 使用try-with-resources注意的问题

    package coin; import java.io.FileInputStream; import java.io.ObjectInputStream; /** * 使用 try-with-re ...

  4. 04.spring-data-redis与Jedis整合使用

    1.spring-data-redis与Jedis简单整合 spring-data-redis与Jedis简单整合,Redis没有任何集群只是单节点工作,使用连接池 1.创建spring-contex ...

  5. Json Serialize 忽略特定属性

    Json Serialize 忽略特定属性 Json Serialize SerializeFilter 忽略特定属性 key words:Json Serialize jackson fastjso ...

  6. 【POJ】【2449】Remmarguts' Date

    K短路/A* 经(luo)典(ti) K短路题目= = K短路学习:http://www.cnblogs.com/Hilda/p/3226692.html 流程: 先把所有边逆向,做一遍dijkstr ...

  7. 【BZOJ】【1087】【SCOI2005】互不侵犯King

    状压DP 我写的太水了……64ms才过,估计还有更好的做法,希望各位神犇不吝赐教>_<. 嗯这题很明显每一行都可以用一个2进制数表示放置方式的,(1表示放,0表示不放).然后预处理一下所有 ...

  8. mongo二维数组操作

    有2个嵌套的数组: 如果我想查询comments里score大于5的记录: testProvider.find({"comments.score":{"$gt" ...

  9. [工作积累] NDK通过Java获取package name 和version

    ////////////////////////////////////////////////////////////////////////// //Java code snippet //get ...

  10. JavaScript之isNaN()函数讲解

    定义和用法 isNaN() 函数用于检查其参数是否是非数字值. 语法 isNaN(x) 参数 描述 x 必需.要检测的值. 返回值 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的 ...