mybatis-批量更新

批量更新的语法是这样的,通过case when,来匹配id 相关的字段值。

update tbl_emp set
emp_name =
	case emp_id
		when ? then ?
		when ? then ?
		when ? then ? end ,
gender =
	case emp_id
		when ? then ?
		when ? then ?
		when ? then ? end ,
email =
	case emp_id
		when ? then ?
		when ? then ?
		when ? then ? end
where emp_id in ( ? , ? , ? )

所以在Mapper 文件里面最关键的就是case when 和where 的配置。

需要注意一下open 属性和separator 属性。

<update id="updateBatch">
	update tbl_emp set
	emp_name =
	<foreach collection="list" item="emps" index="index" separator=" " open="case emp_id"
		close="end">
		when #{emps.empId} then #{emps.empName}
	</foreach>
	,gender =
	<foreach collection="list" item="emps" index="index" separator=" " open="case emp_id"
		close="end">
		when #{emps.empId} then #{emps.gender}
	</foreach>
	,email =
	<foreach collection="list" item="emps" index="index" separator=" " open="case emp_id"
		close="end">
		when #{emps.empId} then #{emps.email}
	</foreach>
	where emp_id in
	<foreach collection="list" item="emps" index="index" separator="," open="("
		close=")">
		#{emps.empId}
	</foreach>
</update>

批量删除也是类似的。

 

上一篇:员工的增删改查


下一篇:声明式事务