
实战:MyBatis批量操作-xml方式
发布日期:2021-05-09 00:41:28
浏览次数:13
分类:博客文章
本文共 2088 字,大约阅读时间需要 6 分钟。
欢迎大家关注我的个,获取更好的阅读体验以及最新的文章分享~
在实际项目中,我们一般都会用到批量insert、delete、update等操作,由于使用频率还是蛮高的,这里就做个简单的记录,供以后学习和参考。
批量插入
在批量插入数据库时,我们有两种办法可以完成该操作:
循环执行多条 insert SQL语句,伪代码示例:
for(;;){ // insert into tableName values(?,?,?...);}
一条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
标签使用说明
- foreach元素的属性主要有 item,index,collection,open,separator,close。
- item表示集合中每一个元素进行迭代时的别名
- index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
- open表示该语句以什么开始
- separator表示在每次进行迭代之间以什么符号作为分隔符
- close表示以什么结束
- collection属性为必填属性! 可以是List,Array,Map.
批量update语句
说得直白点,mybatis
的批量操作重点就是学会怎么去将sql拼接成可以直接在数据库执行的语句,这里再记录下批量update操作,其实只要会了上面一个,其他也都不是问题了。
批量update示例:
DAO接口入参我这里传递过来参数是一个Map<string,object>,代码如下:
Mapconditions = 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 标签说明:
- prepend 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
- property 类型为 java.util.List 的用于遍历的元素(必选)
- open 整个遍历内容体开始的字符串,用于定义括号(可选)
- close 整个遍历内容体结束的字符串,用于定义括号(可选)
- conjunction 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)
foreach
其实就是一个循环遍历,第二种方式就是把第一种的for循环搬运到了xml文件里面,上面demo里面的SQL语句,最后实际执行的就是类似如下的SQL语句:
insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time) values (?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? )
个人博客:
点击查看
点击查看
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月26日 15时09分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
DataStax Bulk Loader教程(四)
2021-05-09
物联网、5G世界与大数据管理
2021-05-09
Cassandra与Kubernetes
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09
Rust 内置 trait :PartialEq 和 Eq
2021-05-09
Hibernate(十四)抓取策略
2021-05-09
[菜鸟的设计模式之旅]观察者模式
2021-05-09
Spring-继承JdbcDaoSupport类后简化配置文件内容
2021-05-09
Java基础IO流(一)
2021-05-09
Hibernate入门(四)---------一级缓存
2021-05-09
MySQL事务(学习笔记)
2021-05-09
一个web前端开发者的日常唠叨
2021-05-09
内存分配-slab分配器
2021-05-09
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2021-05-09
Jupyter Notebook 暗色自定义主题
2021-05-09
[Python学习笔记]组织文件
2021-05-09
基于Redo Log和Undo Log的MySQL崩溃恢复流程
2021-05-09
从RocketMQ的Broker源码层面验证一下这两个点
2021-05-09
如何正确的在项目中接入微信JS-SDK
2021-05-09
纵览全局的框框——智慧搜索
2021-05-09