mybatis实现hibernate中的saveOrUpdate方法
发布日期:2021-07-20 20:53:19
浏览次数:46
分类:技术文章
本文共 1519 字,大约阅读时间需要 5 分钟。
mybatis实现saveOrUpdate
最近在做项目过程中遇到需要更新或者插入的问题,就想起hibernate有个saveOrUpdate的方法,想着mybatis是不是也有这个方法。于是上网查找资料。该问题有两种解决方案。
方法1:使用mybatis的标签
select count(*) from station where id = #{id} 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月08日 04时56分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用ABAP代码下载有道云笔记的内容
2019-04-27
通过一个简单的ABAP报表窥探ABAP内存分配和管理机制
2019-04-27
ABAP里的软引用(weak reference)的用法
2019-04-27
如何用ABAP代码生成新的function module
2019-04-27
ABAP里不用赋值操作,只用位操作实现两个整数值的交换
2019-04-27
SAP TADIR里对象类型的全部清单
2019-04-27
利用ABAP代码动态生成ABAP类
2019-04-27
用ABAP代码实现从1累加到100
2019-04-27
Jerry自己写的ABAP处理中文字符的工具类
2019-04-27
SAP ALV tree的一个最简单demo
2019-04-27
SAP note下载工具
2019-04-27
SAP CRM content management工具类
2021-06-30
根据关键字搜索指定的SAP CRM中间件BDOC
2021-06-30
删除SAP CRM one order和pricing的链接关系
2021-06-30
用ABAP代码将某个report的源代码复制到系统剪切板里
2021-06-30
ABAP面试题:如何翻转一个ABAP内表
2021-06-30
介绍一种Fiori标准应用的增强方式
2021-06-30