在实际项目中,我们一般都会用到批量insert、delete、update等操作,由于使用频率还是蛮高的,这里就做个简单的记录,供以后学习和参考.

批量insert

在数据库中,批量插入可以是多条insert into tableName values(?,?,?...);
或者一条insert into tableName values (?,?,?...),(?,?,?...),(?,?,?...)....
那么我们在使用mybatis时,xml就可以如下写批量操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
<insert id ="INSERT-CODE-BATCH" parameterType="java.util.List" >
insert into redeem_code
(bach_id, code, type, facevalue,create_user,create_time)
values
<foreach collection ="list" item="reddemCode" index= "index" separator =",">
(
#{reddemCode.batchId}, #{reddemCode.code},
#{reddemCode.type},
#{reddemCode.facevalue},
#{reddemCode.createUser}, #{reddemCode.createTime}
)
</foreach >
</insert >

标签说明:

  1. foreach元素的属性主要有 item,index,collection,open,separator,close。
  2. item表示集合中每一个元素进行迭代时的别名
  3. index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
  4. open表示该语句以什么开始
  5. separator表示在每次进行迭代之间以什么符号作为分隔符
  6. close表示以什么结束
  7. collection属性为必填属性! 可以是List,Array,Map.

注意
这里的foreach标签没有包含insert into tableName,所以最后实际执行的是一条SQL语句:
insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time)
values
(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? )

推荐mybatis博客专栏

批量update

mybatis的批量重点就是怎么去将sql拼接成可以直接在数据库执行的sql,这里再记录下以ibatis的批量操作,只要会了一个,其他也都不是问题了.

1
2
3
4
5
6
7
8
9
10
<update id="WHOLESALE-UPDATE-REBATE-CONFIG-BY-PRODUCTCODE" >
UPDATE
rebate_config
SET
rebate_type = 'BY_RATE',rebate_config_value = #rebateConfigValue#
WHERE
<iterate property="list" conjunction="or" open="(" close=")">
product_code =#list[]#
</iterate>
</update>

标签说明:

  1. prepend 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
  2. property 类型为 java.util.List 的用于遍历的元素(必选)
  3. open 整个遍历内容体开始的字符串,用于定义括号(可选)
  4. close 整个遍历内容体结束的字符串,用于定义括号(可选)
  5. conjunction 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)

注意

  1. 我这里传递过来的参数是一个Map<string,object>

    1
    2
    3
    Map<String, Object> conditions = new HashMap<String, Object>();
    conditions.put("rebateConfigValue", rebateValue); //rebateValue是一个固定的值
    conditions.put("list", productCodeList);
  2. 使用时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String

ibatis官方文档说明
ibatis学习网站

mybatis批量操作-xml方式的更多相关文章

  1. springboot使用之二:整合mybatis(xml方式)并添加PageHelper插件

    整合mybatis实在前面项目的基础上进行的,前面项目具体整合请参照springboot使用之一. 一.整合mybatis 整合mybatis的时候可以从mybatis官网下载mybatis官网整合的 ...

  2. SpringBoot入门教程(四)MyBatis generator 注解方式和xml方式

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  3. mybatis mapper xml文件的导入方式和查询方式

    mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis  mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...

  4. MyBatis从入门到精通(2):MyBatis XML方式的基本用法

    本章将通过完成权限管理的常见业务来学习 MyBatis XML方式的基本用法 2.1一个简单的权限控制需求 权限管理的需求: 一个用户拥有若干角色,一个角色拥有若干权限,权限就是对某个模块资源的某种操 ...

  5. MyBatis从入门到精通:使用XML方式(映射文件之类的)

    2.3节笔记部分: package tk.mybatis.simple; public class Temp { } /* 2.2 使用XML方式 MyBatis使用了Java的动态代理可以直接通过接 ...

  6. SpringBoot系列-整合Mybatis(XML配置方式)

    目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...

  7. 一、MyBatis基本使用,包括xml方式、注解方式、及动态SQL

    一.简介 发展历史:MyBatis 的前 身是 iBATIS.最初侧重于 密码软件的开发 , 后来发展成为一款基于 Java 的持久层框架. 定      位:MyBatis 是一款优秀的支持自定义 ...

  8. Spring Boot整合Mybatis(注解方式和XML方式)

    其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...

  9. Mybatis 快速入门(XML方式)第一天

    导读 架构原理图 说明 mybatis配置文件 SqlMapConfig.xml,此文件为mybatis的全局配置文件,配置了mybatis的运行环境等信息 XXXMapper.xml,此文件作为my ...

随机推荐

  1. [图解算法]线性时间选择Linear Select——<递归与分治策略>

    #include <ctime> #include <iostream> using namespace std; template <class Type> vo ...

  2. 何時需要重启 OFBiz

    你在做如下更改時需要重新启動OFBiz服務器: - Java文件(記得要重新編譯) - 配置/.properties文件 - entitymodel或entitygroup XML定義文件 - 服務或 ...

  3. npm --save-dev --save 的区别【转载】

    源地址:http://blog.csdn.net/juzipchy/article/details/65653683 npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 ...

  4. 5.Spark Streaming流计算框架的运行流程源码分析2

    1 spark streaming 程序代码实例 代码如下: object OnlineTheTop3ItemForEachCategory2DB { def main(args: Array[Str ...

  5. 推荐开源靶场Vulhub

    转:https://github.com/phith0n/vulhub Vulhub - Some Docker-Compose files for vulnerabilities environme ...

  6. 初始pip

    关于pip包括下面的东西还不是很懂,慢慢的了解,我的pip是从https://bootstrap.pypa.io/get-pip.py 粘贴并命名为 get-pip.py 后,执行 python ge ...

  7. 用jquery实现文章自动生成二级目录

    前段时间有个同学问有没有办法在博客园上发一篇文章然后自动生成文章的目录.之前不知道该怎么做这几天看了些jquery之后觉得还是容易的. 一级目录 一级目录的思路很简单,找出作为一级标题的元素,在某个地 ...

  8. Flask实战第40天:图片验证码生成技术

    图片验证码生成 安装pillow pip install pillow 在utils下新建python package命名为captcha 把需要需要用到的字体放在captcha下 编辑captcha ...

  9. Xamarin Android项目提示SDK版本太老

    Xamarin Android项目提示SDK版本太老 错误信息:The installed Android SDK is too old.Version 24.3.4 or newer is requ ...

  10. poj 2739(筛法求素数)

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21613 ...