mybatis中使用foreach批量添加

mybatis中使用foreach批量添加

条件:循环生成多个对象,将对象添加到数据库
mapper文件的sql语句

<insert id="insertUser" parameterType="java.util.Map">
	
	insert into user
	
	(user_id,user_name)
	
	values
	
	<foreach collection="addList" item="item" index="index" separator="," open="(" close=")" >
	
	#{item.userId,jdbcType=VARCHAR},#{item.userName,jdbcType=VARCHAR}
	
	</foreach>

</insert>

后端代码生成的对象

Map<String,Object> map=new HashMap<String,Object>();

List<User> list =new ArrayList<User>();

for(int i=1;i<=3;i++){
	
	User user=new User();
	
	user.setUserId(""+i);
	
	user.setUserName(""+i);
	
	list.add(user);
}

map.put("addList",list);
userMapper.insertUser(map);

生成多个User对象,将User对象添加到List中,然后放入Map执行添加
insert的传入参数是Map,所以放到Map中,foreach循环遍历传入的addList,collection表示传入的集合,(如果userMapper.insert(集合)传入的是list集合则名称是固定的list,如果传入的是array数组,名称也是固定的array,因为传入list或array是mybatis会将它包装在map中,list或array作为键名,集合作为值;传入map时就是键名)
item表示迭代时的别名,index表示下角标,separator表示批量插入时以逗号分割
open和close表示以 ”(” 开始以 ”)” 结束
执行完后,可以看到执行的sql语句格式,可以对照参考理解

执行的sql语句:

insert into user (user_id,user_name) values (userId,userName),(userId,userName),(userId,userName); 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值