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批量处理相关推荐

  1. 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义

    今天突然碰到这个错误,让我复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义 nested exception is org.apache.ibatis.ex ...

  2. mysql list列表批量更新数据,Mybatis传入List实现批量更新的示例代码

    Dao层写法 /** * 批量更新新库存 * @param list * @return */ int updateNewStock(@Param(value = "list") ...

  3. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  4. SSM综合复习之MyBatis

    MyBatis 1.Mybatis简介 1.1.什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyB ...

  5. 深入理解MyBatis(七)—MyBatis事务

    深入理解MyBatis(七)-MyBatis事务 MyBatis可以通过XML配置文件设定是否进行事务管理, 事务管理主要包括事务的提交,回滚等: 本文主要介绍了事务的入口,MyBatis事务操作对数 ...

  6. mybatis操作Oracle数据库批量插入与更新、运行注意事项、属性含义

    一.项目需求 针对将近300万用户的用电数据进行统计分析,将结果更新保存Oracle数据库.我需要往一个表里面插入数据,数据量总计在500万条左右.一条一条插入的话非常慢,2万条数据近20分钟,后面就 ...

  7. mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数

    mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...

  8. MyBatis复习笔记6:MyBatis缓存机制

    MyBatis缓存机制 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.缓存可以极大的提升查询效率. MyBatis系统中默认定义了两级缓存. 一级缓存和二级缓存. 默认情 ...

  9. MyBatis复习笔记5:MyBatis代码生成器

    前言:做过几个项目之后深感代码生成器的便捷,有了它我们可以少写许多重复的.基础的代码,如基本的增删改查的代码,我们可以交给代码生成器生成,而我们只需要专注于业务逻辑上的代码即可. MyBatis Ge ...

最新文章

  1. 电子商务就是计算机技术在传统商务中的应用,数据计算机论文,关于计算机Web数据其在电子商务中的应用相关参考文献资料-免费论文范文...
  2. else 策略模式去掉if_java – 用状态/策略模式替换if/else逻辑
  3. 【资源】吴恩达新书《Machine Learning Yearning》,附中文版PDF下载
  4. C#中获取今天是星期几
  5. Win10 powershell字体设置
  6. 如何解决数据流转「不可能三角」难题?
  7. 如何在eclipse中建立一个安卓工程
  8. 爬去动态网站今日头条图片集
  9. 【蓝桥】算法训练 Beaver‘s Calculator(贪心)
  10. POJ1007 DNA Sorting中英对照翻译与参考解答
  11. 企企通创始人徐辉:连通 跨界 赋能 创新,构建一个企业互联的网状生态
  12. 计算机网络高频知识点(一)
  13. Latex 表格文字居中(垂直和水平居中)
  14. 风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
  15. nbu客户端卸载_NBU客户端安装失败
  16. 计算机考验难度院校,计算机考研难度排行榜:这5所院校最高冷
  17. kubeedge系列之Beehive(二)
  18. Android Studio 2.2新增布局——ConstraintLayout完全解析
  19. Android.mk文件详解介绍
  20. 每周荐书 ES6 虚拟现实 物联网(评论送书)

热门文章

  1. 统计学基础一:基础概念
  2. 05 Django REST Framework 分页
  3. 洛谷 P1031 均分纸牌【交叉模拟】
  4. 一维数组模拟数据结构-------栈
  5. JDBC学习笔记(6)——获取自动生成的主键值处理Blob数据库事务处理
  6. 解决openresty http客户端不支持https的问题
  7. requirejs的用法(二)
  8. Acitivity创建与配置
  9. Android 数据库综述(一) 数据库片的升级与数据的迁移操作
  10. JS中关于异步的那点事~