博客
关于我
实战:MyBatis批量操作-xml方式
阅读量:404 次
发布时间:2019-03-06

本文共 2088 字,大约阅读时间需要 6 分钟。

欢迎大家关注我的个,获取更好的阅读体验以及最新的文章分享~

 

 

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

批量插入

在批量插入数据库时,我们有两种办法可以完成该操作:

  1. 循环执行多条 insert SQL语句,伪代码示例:

    for(;;){   // insert into tableName values(?,?,?...);}

     

  2. 一条SQL语句完成批量插入,伪代码示例:

    insert into tableName values (?,?,?...),(?,?,?...),(?,?,?...)....

     

第一种方式很简单,在 Service 代码直接循环调用 Dao 层单条插入接口就行。

第二种方式不需要在Service循环,只需要在调用Dao层的时候传入一个List,之后交由 Mybatis 来完成转换成第二种SQL语句

批量insert语句

我们在使用mybatis时框架时,可以使用foreach标签来完成转换成批量插入的SQL语句功能

代码示例:

insert into table_name (bach_id, code, type, facevalue,create_user,create_time) values
( #{reddemCode.batchId}, #{reddemCode.code}, #{reddemCode.type}, #{reddemCode.facevalue}, #{reddemCode.createUser}, #{reddemCode.createTime} )

 

foreach标签使用说明

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

批量update语句

说得直白点,mybatis的批量操作重点就是学会怎么去将sql拼接成可以直接在数据库执行的语句,这里再记录下批量update操作,其实只要会了上面一个,其他也都不是问题了。

批量update示例:

DAO接口入参我这里传递过来参数是一个Map<string,object>,代码如下:

Map
conditions = new HashMap
();conditions.put("rebateConfigValue", rebateValue); //rebateValue是一个固定的值conditions.put("list", productCodeList);

 

xml 文件:

UPDATE rebate_config SET rebate_type = 'BY_RATE',rebate_config_value = #rebateConfigValue# WHERE
product_code =#list[]#

 

iterate 标签说明:

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

foreach 其实就是一个循环遍历,第二种方式就是把第一种的for循环搬运到了xml文件里面,上面demo里面的SQL语句,最后实际执行的就是类似如下的SQL语句:

insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time) values (?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? )

  

个人博客:

点击查看

点击查看

转载地址:http://viikz.baihongyu.com/

你可能感兴趣的文章
Linux查看CUDA和cuDNN版本
查看>>
C#获取Excel中所有的Sheet名称
查看>>
[最全整理]关于决策树的一切
查看>>
100天搞定机器学习|Day9-12 支持向量机
查看>>
100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘
查看>>
100天搞定机器学习|day37 无公式理解反向传播算法之精髓
查看>>
数据工程师必备的8项技能,不要只知道Python!
查看>>
iOS UIAlertController
查看>>
iOS Xcode 打包之后,不能输出日志
查看>>
UIPickerView的使用(二)
查看>>
iOS 多线程GCD简介
查看>>
说说字库和字模的故事,然后在 MaixPy 里实现打印中文字体(任意字体)吧!
查看>>
linux kernel version magic 不一致导致的模块 加载 (insmod) 不上
查看>>
centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
查看>>
Google新玩法(转载)
查看>>
最通俗易懂的囚徒困境
查看>>
MySQL 1064 You have an error in your SQL syntax 错误解决办法
查看>>
liteide错误: 进程无法启动--解决方法
查看>>
Java程序中的代理作用和应用场景及实现
查看>>
Java 前台后台数据传递、中文乱码解决方法
查看>>