mybatis中批量操作 foreach

本文详细介绍了在MyBatis中如何使用foreach进行批量更新和批量删除操作,包括参数设置、XML映射文件的配置及具体语法解释,适用于批量处理大量数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

MyBatis中批量操作,如批量更新、批量删除等

解决:

关键:使用foreach,循环。

栗子:

批量更新,参数是Map类型

	//private List<Map<String,Object>> rowDatas;
	//params.put("resultlist", result.getRowDatas());
	//我是想说:result.getRowDatas(),返回值是一个List类型数据;放到了类型为Map的params中;
	public int update(String insertId, Map<String, Object> params) {
		return super.getSqlSession().update("updateByBatch", params);
	}
    <update id="updateByBatch" parameterType="java.util.HashMap">
    	<foreach collection="resultlist" item="item" index="index" open="begin" close=";end;" separator=";">
    		update table t
    		set
    		t.aa= #{item.aa, jdbcType=VARCHAR},
    		t.bb= #{item.bb, jdbcType=VARCHAR}
    		where t.id= #{item.id, jdbcType=VARCHAR}
    	</foreach>
	</update>

解释:

如果参数是Map类型,在foreach中,

  • collection:取值为map中的key值;这里渠道的resultlist,是一个List类型的数据。
  • item:循环中单个对象的引用;

在foreach中:
item是一个resultlist中的一个元素;
通过 #{item.ljkc, jdbcType=VARCHAR} 方式,获得取值。(已经晕了)

拓展:

参考:https://blog.youkuaiyun.com/hjh908778/article/details/79034395/

关于mybatis中的foreach的使用:
collection属性:

  1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
  2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
  3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key

即,collection属性有三种取值;分别是:list,array,和(当传入参数是Map时,取值为Map中的key对应的值)。
当参数是Map时,collection属性取值为Map中key对应的取值;如上文的栗子。

后记:

ps:其实没那么想记下来;但是感觉好久没写点什么了=。=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值