java的jdbc中如何实现save or update功能?

些什么样的sql语句 实现已存在的记录进行更新 不存在的记录进行添加
不能用hibernate

第1个回答  推荐于2016-06-20
一般的解决方案就是现根据id查一次,如果有就更新,没有就插入,这是最直观的,也是最方便的。如果你数据库是oracle,有一种方法可以实现这个操作,merge关键字,语法大概是这样:

MERGE INTO 目标表 a
USING(SELECT
FROM 从表
) b
on (=条件)
when matched then update
set
when not matched then insert
具体的用法你可以查一下oracle的这个关键字本回答被提问者和网友采纳
第2个回答  2013-01-28
这种sql不存在,如果要实现这种方法,你只能手写,方法里自己做if判断是插入还是更新。
或者你去看看hibernate的源代码,它也不是用一句神奇的sql就能实现的
第3个回答  2013-01-28
Connection+Result+PrepareStatement

java的jdbc中如何实现save or update功能?数据比较多,不想每次都去查询...
JAVA的jdbc是没有的,hibernate中是有这个方法的。不过你自己可以实现一个saveOrUpdate方法,如下 public static boolean saveOrUpdate(String tableName, String indexName,Object index,..){ \/\/tableName是你的表名,IndexName为你的主键名,index为主键值,如果主键不唯一,可以用id编号来代替双主键,...

java的jdbc中如何实现save or update功能?
JAVA的jdbc是没有的,hibernate中是有这个方法的。不过可以实现一个saveOrUpdate方法,IndexName为你的主键名,index为主键值,如果主键不唯一,可以用id编号来代替双主键,或者用数组接收。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语...

java的jdbc中如何实现save or update功能?
一般的解决方案就是现根据id查一次,如果有就更新,没有就插入,这是最直观的,也是最方便的。如果你数据库是oracle,有一种方法可以实现这个操作,merge关键字,语法大概是这样:MERGE INTO 目标表 a USING(SELECT FROM 从表 ) b on (=条件)when matched then update set when not matched then...

问一个关于hibernate的saveOrUpdate的问题
你update的时候必须先get对象,然后把要改的属性set,直接new的话,得到的不是持久化对象

hibernate中的update()与saveOrUpdate()的区别,load()与get()的区别...
saveOrUpdate()会根据所给对象的id不同,来选择使用save或者update:如果对象id为null,就执行save;如果对象id从来没有persistent过,也执行save,如果对象是persistent对象的一个新的verison,那么也save,除了上面的情况其他都执行update;load()方法在你想load的对象不存在时,会throw exception,而get方法...

java:hibernate的saveorupdate如何辨别对象是否有和无的?
saveOrUpdate 是根据 unsaved-value 检查来决定是采用save还是update。例如下面的id定义:<id name="id" column="id" type="java.lang.Long" unsaved-value="null"> <generator class="..."><\/generator> <\/id> 在调用saveOrUpdate的时候,如果对象的id属性值等于null(unsaved-value),会执行...

谁能告诉我hibernate的saveorupdate底层实现
我没分析过源码。但是 我可以告诉你思路。其实就是insert前要查询一下数据库有没有这个记录如果有那么就根据对象中的主键进行更新,没有的话就删除。就是比对一下。不知道这样回答行不。

hibernate中的update()和saveOrUpdate()的区别,session的load()和...
saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。hibernate中get方法和load方法的根本区别 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心...

Hibernate中的 update()和saveOrUpdate()的区别,session的load()和...
load方法可返回实体的代理类实例,而 get方法永远直接返回实体类;load 方法可以充分利用内部缓存和二级缓存中的现有数据,而 get 方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用 SQL 完成数据读取。 saveOrUpdate()方法可以实现 update()的功能,但会多些步骤,具体如...

hibernate saveOrUpdate或者merge 方法报错违反唯一性约束
这种错误一般可能是将同一实体类的不同对象进行了操作,就会报违反唯一性约束的错误,然而对于这种错误的另一种解决方案:1、使用session.clear()方法先将session清空 2、再用session.update(Object obj)来进行操作

相似回答