MyBatis复习(七):MyBatis批量处理
foreach元素属性
foreach是动态SQL的一个重要元素,我们可以将任何可迭代对象(List、Set等)、Map对象或数组对象作为集合参数传递给foreach,然后通过迭代传入的集合参数进行批量操作处理。
当使用可迭代对象或数组时:index 代表当前迭代的序号,item的值是本次迭代获取到的元素。
当使用Map对象时,index是键,item是值
collection:表示传入的参数类型
如果参数类型是List,则collecion属性值必须指定为list,即
collection="list"
如果参数类型是Array,则collecion属性值必须指定为array,即
collection="array"
如果参数类型为Map,则collecion属性值
item:item是循环体中的具体对象。例如 item.title ,item.content ,item.description , item.createTime
在List和数组中,item表示本次迭代获取到的元素。
在Map中,item表示map中键的值。
index:在List和数组中,index表示元素的序号;在Map中,index表示元素的key
open:开头字符,一般与close=")"合用,常用在in()子句中
close:结尾字符,一般与open="("合用,常用在in()子句中
separator:集合项迭代之间的分隔符。例如separator=",“会自动在元素中间用”,"隔开,如values(“a”,“b”),(“a”,“b”) 或 in(“a”, “b”)
批量插入
SQL语法格式:
insert into t_table(col_1, col_2, col_3) values("a1","b1","c1"),("a2","b2","c2"), ..., ("an","bn","cn")
MyBatis中的用法:
<insert id="batchInsert" parameterType="java.util.List">insert into t_blog(title, content, description, create_time)values<foreach collection="list" item="item" index="index" separator=",">#{item.title}, #{item.content}, #{item.description}, #{item.createTime}</foreach>
</insert >
批量删除
SQL语法格式:
delete from t_table where col_1 in (value_1, value_2, ..., value_n)
MyBatis中的用法:
<delete id="batchDelete" parameterType="java.util.List">delete from t_blog where blog_id in<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach>
</delete >
批量查询
SQL语法格式:
select col_n from t_table where col_m in (value_1, value_2, ..., value_n)
MyBatis中的用法:
<select id="batchSelect" resultType="User">select username from t_user where age in<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach>
</delete >
参数是List类型
<select id="batchSelect" resultType="User">select username from t_user where age in<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach>
</delete >
参数是Array类型
<select id="batchSelect" resultType="User">select username from t_user where age in<foreach collection="array" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach>
</delete >
参数是Map类型
map情况比较复杂,这里不做讲解
https://blog.csdn.net/czd3355/article/details/75340080
https://blog.csdn.net/isea533/article/details/21237175?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
MyBatis复习(七):MyBatis批量处理相关推荐
- 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
今天突然碰到这个错误,让我复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义 nested exception is org.apache.ibatis.ex ...
- mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码
Dao层写法 /** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") ...
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
- SSM综合复习之MyBatis
MyBatis 1.Mybatis简介 1.1.什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyB ...
- 深入理解MyBatis(七)—MyBatis事务
深入理解MyBatis(七)-MyBatis事务 MyBatis可以通过XML配置文件设定是否进行事务管理, 事务管理主要包括事务的提交,回滚等: 本文主要介绍了事务的入口,MyBatis事务操作对数 ...
- mybatis操作Oracle数据库批量插入与更新、运行注意事项、属性含义
一.项目需求 针对将近300万用户的用电数据进行统计分析,将结果更新保存Oracle数据库.我需要往一个表里面插入数据,数据量总计在500万条左右.一条一条插入的话非常慢,2万条数据近20分钟,后面就 ...
- mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...
- MyBatis复习笔记6:MyBatis缓存机制
MyBatis缓存机制 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.缓存可以极大的提升查询效率. MyBatis系统中默认定义了两级缓存. 一级缓存和二级缓存. 默认情 ...
- MyBatis复习笔记5:MyBatis代码生成器
前言:做过几个项目之后深感代码生成器的便捷,有了它我们可以少写许多重复的.基础的代码,如基本的增删改查的代码,我们可以交给代码生成器生成,而我们只需要专注于业务逻辑上的代码即可. MyBatis Ge ...
最新文章
- 电子商务就是计算机技术在传统商务中的应用,数据计算机论文,关于计算机Web数据其在电子商务中的应用相关参考文献资料-免费论文范文...
- else 策略模式去掉if_java – 用状态/策略模式替换if/else逻辑
- 【资源】吴恩达新书《Machine Learning Yearning》,附中文版PDF下载
- C#中获取今天是星期几
- Win10 powershell字体设置
- 如何解决数据流转「不可能三角」难题?
- 如何在eclipse中建立一个安卓工程
- 爬去动态网站今日头条图片集
- 【蓝桥】算法训练 Beaver‘s Calculator(贪心)
- POJ1007 DNA Sorting中英对照翻译与参考解答
- 企企通创始人徐辉:连通 跨界 赋能 创新,构建一个企业互联的网状生态
- 计算机网络高频知识点(一)
- Latex 表格文字居中(垂直和水平居中)
- 风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
- nbu客户端卸载_NBU客户端安装失败
- 计算机考验难度院校,计算机考研难度排行榜:这5所院校最高冷
- kubeedge系列之Beehive(二)
- Android Studio 2.2新增布局——ConstraintLayout完全解析
- Android.mk文件详解介绍
- 每周荐书 ES6 虚拟现实 物联网(评论送书)