我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

一、xml文件中foreach的主要属性

foreach元素的属性主要有 collection,item,index,separator,open,close。
collection: 表示集合,数据源
item :表示集合中的每一个元素
index :用于表示在迭代过程中,每次迭代到的位置
separator :表示在迭代时数据以什么符号作为分隔符
open :表示该语句以什么开始
close :表示以什么结束

二、foreach批量查询数据

当查询的参数只有一个时

例如:findByIds(List ids)
a.如果参数类型为List,在使用时,collection的属性需指定为list
b.如果参数类型为数组,则在使用时,collection属性需指定为array

<select id="findByIdsMap" resultMap="BaseResultMap">         Select  sum(mark)         from table_user where user_id in                  <foreach item="item" index="index" collection="list"                          open="(" separator="," close=")">                        #{item}                </foreach>  </select> 

当查询的参数是一个对象时

例如:findByIds(List userList)

<select id="findByIdsMap" resultMap="BaseResultMap">         Select sum(mark)         from table_user where user_id in                  <foreach item="item" index="index" collection="list"                          open="(" separator="," close=")">                        #{item.userId}                </foreach>  </select> 

三、foreach批量插入数据

实现foreach批量插入数据有两种方法,一种是只发送一条 SQL,插入的多条数据之间通过”,” 分隔开,另一种方式是每插入一条数据就发送一条 SQL 语句,多个 SQL 语句之间用“;”分割。

1.一条 SQL 批量插入数据

对应的Mapper接口代码如下:

Integer addStudentByList(@Param("list") List<Student> list);

对应的SQL 映射文件如下:

<insert id="addStudentByList" parameterType="">    INSERT INTO Student(username, age, password) VALUES     <foreach collection="list" item="item" separator=",">        (#{ item.username}, #{ item.age}, #{ item.password})    </foreach></insert>

2.执行多条 SQL 批量插入数据

对应的Mapper接口代码和一条 SQL 批量插入数据相同
对应的SQL 映射文件在一条 SQL 批量插入数据的基础上修改如下:

<insert id="addEmpsByList" parameterType="com.jas.mybatis.bean.Employee">    <!-- 每插入一条数据就执行一次 SQL,中间用";"分隔开  -->    <foreach collection="list" item="emp" separator=";">        INSERT INTO Student(username, age, password) VALUES        (#{ item.username}, #{ item.age}, #{ item.password})    </foreach></insert>

三、foreach批量更新数据

实现foreach批量插入数据有两种种方法,第一种是一条sql语句来批量更新数据,第二种是批量更新的sql。

一条 SQL 批量更新数据

一条sql语句来批量更新所有数据,下面直接看一下在mybatis中通常是怎么写的(去掉mybatis语法就是原生的sql语句了,所有就没单独说sql是怎么写的)
对应的SQL 映射文件如下:

<update id="updateBatch" parameterType="java.util.List">    update Student set  username=    <foreach collection="list" item="item" index="index" separator=" " open="case ID" close="end">        when #{ item.id} then #{ item.username}    </foreach>    where id in    <foreach collection="list" index="index" item="item" separator="," open="(" close=")">        #{ item.id,jdbcType=BIGINT}    </foreach></update><------------------------------------分隔符--------------------------------> <update id="updateBatch"  parameterType="java.util.List">      <foreach collection="list" item="item" index="index" open="" close="" separator=";">        update Student        <set>            username=${ item.username}        </set>        where id = ${ item.id}    </foreach>      </update>

四、foreach批量删除数据

所对应的SQL映射文件如下:

<delete id="delAssetstype" parameterType="java.util.List">       DELETE FROM WHERE id in       <foreach collection="list" item="item" open="(" close=")" separator=",">           #{ item}       </foreach>   </delete>

对应的Mapper接口代码如下:

public void deleteAssetstype(List<Integer> ids);

来源地址:https://blog.csdn.net/Czh3616x/article/details/127600812

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

一、xml文件中foreach的主要属性 foreach元素的属性主要有 collection,item,index,separator,open,close。 collection: 表示集合,数据源 item :表示集合中的每一个元素
2023-08-30

MyBatis-plus批量插入的通用方法使用

mybatis-plus的IService接口默认提供saveBatch批量插入,也是唯一一个默认批量插入,在数据量不是很大的情况下可以直接使用,本文带你详细了解MyBatis-plus批量插入的通用方法及使用方法,需要的朋友可以参考一下
2023-05-15

编程热搜

目录