
mybatis实现hibernate中的saveOrUpdate方法
发布日期:2021-07-20 20:53:19
浏览次数:22
分类:技术文章
本文共 1398 字,大约阅读时间需要 4 分钟。
mybatis实现saveOrUpdate
最近在做项目过程中遇到需要更新或者插入的问题,就想起hibernate有个saveOrUpdate的方法,想着mybatis是不是也有这个方法。于是上网查找资料。该问题有两种解决方案。
方法1:使用mybatis的标签
select count(*) from station where id = #{id}0">
update station
set s_describe = #{sDescribe},s_longitude = #{sLongitude}
where id = #{id}
insert into station values(#{id},#{sDescribe},#{sLongitude})
这种方式实际上就是将需求拆为两条sql语句来完成,虽然解决问题了,但是感觉不利于事务的控制管理
方式2:使用sql语句实现
通过这次遇到的问题,我也学到了原生sql语句是怎么实现这个功能的。
在mysql里,如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
INSERT INTO table (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1;UPDATE TABLE SET c=c+1 WHERE a=1;
假设a为unique索引,当执行如上语句,如果出现已经存在a=1的数据,则执行该语句的结果为c=4即执行后面的update,c=c+1。
所以最后我决定还是用第二种方式:
INSERT INTO station
(s_id,
s_describe,
s_station,
s_buoyid)
VALUES (
#{sId,jdbcType=INTEGER},
#{sDescribe,jdbcType=VARCHAR},
#{sStation,jdbcType=VARCHAR},
#{sBuoyid,jdbcType=VARCHAR}
)
ON DUPLICATE KEY UPDATE
date = #{date,jdbcType=VARCHAR},
s_longitude = #{sLongitude,jdbcType=VARCHAR},
s_latitude = #{sLatitude,jdbcType=VARCHAR},
s_describe = #{sDescribe,jdbcType=VARCHAR},
s_station = #{sStation,jdbcType=VARCHAR},
;
转载地址:https://blog.csdn.net/liao0801_123/article/details/82987245 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.46.13.176]2022年12月04日 12时23分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
JdbcTemplate简单介绍
2019-06-18 13:17:46
Civil 3D CustomDraw .NET混合项目设置
2019-06-18 13:17:45
Shell脚步学习指南提点
2019-06-18 13:17:45
【转载】白话经典算法系列之六 快速排序 快速搞定
2019-06-18 13:17:44
Spring 常用注解
2019-06-18 13:17:44
Spark2.X集群运行模式
2019-06-18 13:17:43
javascript动画系列第二篇——磁性吸附
2019-06-18 13:17:43
MVC+EF 入门教程(四)
2019-06-18 13:17:42
java String补足
2019-06-18 13:17:41
笔记2:傻瓜式盗QQ程序
2019-06-18 13:17:41
ios开发之--令UITableView滚动到指定位置
2019-06-18 13:17:41
Chrome中使用showModalDialog无法接收返回值,解决方案
2019-06-18 13:17:40
很想回家,想念从前......
2019-06-18 13:17:40
O-超大型LED显示屏
2019-06-18 13:17:39
学习一下HTTP
2019-06-18 13:17:39
脱离标准文档流(1)---浮动
2019-06-18 13:17:38
HDU 1222 Wolf and Rabbit(gcd)
2019-06-18 13:17:37
gprof
2019-06-18 13:17:37
ubuntu proxy
2019-06-18 13:17:36
js 判断字符是否以汉字开头
2019-06-18 13:17:36