0
点赞
收藏
分享

微信扫一扫

oracle中的replace into

残北 2022-05-06 阅读 159

Mybaitis foreach批量insert 以及配合 oracle merge into 函数,批量update和insert

oracle中相当于mysql的replace into函数:merge into

使用方法

普通使用
xml中

<update id="mergeStudents" parameterType="com.alibaba.dto.StudentDTO">
		merge into t_student a
		using
		(
			SELECT
			#{id} as id,
			#{name} as name,
			#{age} as age
			FROM dual
		) b
		on (
		a.id= b.id
		)
		when matched then
		UPDATE SET
		a.name= b.name,
		a.age=b.age
		when not matched then
		INSERT(
		a.id,
		a.name,
		a.age
		) VALUES(
		b.id,
		b.name,
		b.age
		)
	</update>

加上foreach

<update id="mergeStudents" parameterType="com.alibaba.dto.StudentDTO">
		merge into t_student a
		using
		(
		<foreach collection="stus" item="item" index="index" open=""
				 close="" separator="union all">
			SELECT
			#{item.id,jdbcType=VARCHAR} as id,
			#{item.name,jdbcType=VARCHAR} as name,
			#{item.age,jdbcType=VARCHAR} as age
			FROM dual
		</foreach>
		) b
		on (
		a.id= b.id
		)
		when matched then
		UPDATE SET
		a.name= b.name,
		a.age=b.age
		when not matched then
		INSERT(
		a.id,
		a.name,
		a.age
		) VALUES(
		b.id,
		b.name,
		b.age
		)
	</update>
举报

相关推荐

0 条评论