ON DUPLICATE KEY UPDATE小结

ON DUPLICATE KEY UPDATE应用场景

解决重复数据插入问题,可在数据库中添加字段索引,加以控制数据重复的字段;
当数据库中存在所设置索引字段记录时,执行这条语句会更新数据(可自定义更新字段),而不存在设置索引字段记录时,则会插入数据。

数据库索引设置

在这里插入图片描述
1.数据表索引的名称(自定义)
2.索引添加的字段,这些字段共同组成一个索引;
3.索引类型,此业务应选取"UNIQUE",约束唯一标识数据库表中的每条记录

SQL语句实现

插入单条数据

INSERT INTO t_price (
	id,
	project,
	price,
	remark,
	user_id,
	dept_id,
	STATUS,
	creater,
	create_time
)
VALUES
	(
		#{id,jdbcType=VARCHAR}, #{project,jdbcType=VARCHAR}, #{price,jdbcType=VARCHAR}, 
		#{remark,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{deptId,jdbcType=VARCHAR},
		#{status,jdbcType=VARCHAR}, #{creater,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR}
	) ON DUPLICATE KEY UPDATE create_time = #{createTime,jdbcType=VARCHAR};

控制台打印的数据

Preparing: insert into t_price ( id, project, price, user_id, dept_id, status, creater, create_time ) values ( ?, ?, ?, ?, ?, ?, ?, ? ) ON DUPLICATE KEY UPDATE create_time = ?;
 Parameters: a2144a3afef64ca9bb2555c166e405a0(String), 829a74a4d4814a7f82ead9a40208120f(String), 0.01(String), e3654267858d4de29a12733b3f25ed75(String), e3654267858d4de29a12733b3f25ed75(String), 1(String), 8aa1bd629c744a2b8130aa7eef391b7d(String), 2019-05-16 17:38:08(String), 2019-05-16 17:38:08(String)

插入多条数据

INSERT INTO tab (
	id,
	project,
	price,
	remark,
	user_id,
	dept_id,
	STATUS,
	creater,
	create_time
)
VALUES
	< foreach collection = "list" item = "item" SEPARATOR = "," > (
		#{id,jdbcType=VARCHAR}, #{project,jdbcType=VARCHAR}, #{price,jdbcType=VARCHAR}, 
		#{remark,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{deptId,jdbcType=VARCHAR},
		#{status,jdbcType=VARCHAR}, #{creater,jdbcType=VARCHAR}, #{createTime,jdbcType=VARCHAR)
		</ foreach > ON DUPLICATE KEY UPDATE create_time = #{createTime,jdbcType=VARCHAR};

同时增加“project”,“user_id”,“user_id”三者都相同的数据的时候,只会增加一条,之后的数据将不会增加到数据库,只会修改掉“create_time”

发布了35 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43948057/article/details/90268909