mybatis批量insert 和 update 例子

批量更新:
<update id="updateExcel" parameterType="com.module.system.pojo.XXX">
		UPDATE *** 
		SET
			DATE =
			<foreach collection="updateList" index="index" separator=" " item="list" open="case ID" close="end">  
				when  #{list.id} then #{list.date}
			</foreach>
			,DATA_TIME =
			<foreach collection="updateList" index="index" separator=" " item="list" open="case ID" close="end">  
				when  #{list.id} then #{list.dataTime}
			</foreach>
			,COMPANY =
			<foreach collection="updateList" index="index" separator=" " item="list" open="case ID" close="end">  
				when  #{list.id} then #{list.company}
			</foreach>
			,DELETED =
			<foreach collection="updateList" index="index" separator=" " item="list" open="case ID" close="end">  
				when  #{list.id} then #{list.deleted}
			</foreach>
		WHERE ID in 
			<foreach collection="updateList" index="index" separator="," item="list" open="(" close=")">  
				  #{list.id}
			</foreach>
	</update>

批量插入:

<insert id="addExcelSeat" parameterType="com.module.system.pojo.XXX">
		INSERT INTO CBD_O2O_SEAT_CHECKING(
			ID,
			DATE,
			DATA_TIME,
			COMPANY,
			DELETED
		)VALUES
		<foreach collection ="insertList" item="list" separator =",">
			(
				#{list.id},
				#{list.Date},
				#{list.dataTime},
				#{list.company},
				#{list.deleted}
			)
		</foreach>
	</insert>

其中when...then...sql中的"switch" 语法。这里借助mybatis<foreach>语法来拼凑成了批量更新的sql,上面的意思就是批量更新idupdateBatch参数所传递List中的数据的status字段。如果当需要为某个字段设置默认值的时候可以使用else value

MySQL 有sql语句长度限制,大小不能超过制定值。可以通过修改配置文件,或分批次处理SQL


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值