java - 区分插入和更新

标签 java jsf jdbc

我有一个 JSF 页面,其中有输入字段,并且值正在保存到数据库中。

我想做插入和更新。 区分插入和更新的最佳方法是什么,我不想使用标志。 我的意思是,如果标志是“I”,则插入,否则标志是“U”,然后更新。

最好是如果 ID 不为空则调用插入方法,否则 ID 为空则调用更新方法。 ID 是我的主键,它是自动生成的。

我使用的是 JSF 1.1,数据库是 Oracle 10g。

最佳答案

这不是 jsf 的典型问题,而是一个标准设计问题。我看到这个问题是通过以下方式处理的。

  1. 获取 ID 并调用选择查询。如果查询返回任何结果,则执行更新,否则执行插入。
  2. 更新并检查受影响的行。如果为0则插入。或者,插入然后检查主键异常。如果抛出异常则更新。
  3. 如果您的数据库允许,请使用集成的更新或插入。这可以在 Oracle 中使用 merge 关键字来完成。
  4. 使用旗帜,但这很丑。
  5. 始终执行逻辑删除和插入。这当然是一个更大的设计决策,并且是在具有非常严格的审核要求的应用程序中实现的。

关于java - 区分插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702328/

相关文章:

java - 如何在 sqljdbc4.jar 中配置 Java Kerberos

java - 更改数据表选择上的输入文本 JSF 2.2/Primefaces

jsf - 所有级别的日志中每个用户/ session 都有唯一的 ID? Log4J?

java - JDBC SQL 中的结果集

java - 设置 SUBREPORT_DIR > 默认值表达式后无法加载子报告

jsf - p :dialog is not calling controller method 内对话框中的按钮

java - JSP项目中的JDBC SQL Server连接错误

java - 在存储过程中插入 Blob null 时参数数量或类型错误

java - 在 WearOS 中显示多个通知

java - MockHttpServletResponse 返回 Pageable 端点的空主体