我有一个 JSF 页面,其中有输入字段,并且值正在保存到数据库中。
我想做插入和更新。 区分插入和更新的最佳方法是什么,我不想使用标志。 我的意思是,如果标志是“I”,则插入,否则标志是“U”,然后更新。
最好是如果 ID 不为空则调用插入方法,否则 ID 为空则调用更新方法。 ID 是我的主键,它是自动生成的。
我使用的是 JSF 1.1,数据库是 Oracle 10g。
最佳答案
这不是 jsf 的典型问题,而是一个标准设计问题。我看到这个问题是通过以下方式处理的。
- 获取 ID 并调用选择查询。如果查询返回任何结果,则执行更新,否则执行插入。
- 更新并检查受影响的行。如果为0则插入。或者,插入然后检查主键异常。如果抛出异常则更新。
- 如果您的数据库允许,请使用集成的更新或插入。这可以在 Oracle 中使用
merge
关键字来完成。 - 使用旗帜,但这很丑。
- 始终执行逻辑删除和插入。这当然是一个更大的设计决策,并且是在具有非常严格的审核要求的应用程序中实现的。
关于java - 区分插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702328/