java - jOOQ 在更新时添加到当前值

标签 java postgresql jooq

我有一个列,其中包含发生的事件的运行计数。我想通过 jOOQ 更新执行与以下 SQL 语句等效的操作:

update event_table set event_count = event_count + 3;

3 是艺术字,它将是一个 int 代表在我的 Java 程序中检测到的当前计数。

有没有一种方法可以做到这一点,而无需在一个 jOOQ 选择中选择值,然后在另一个 jOOQ 更新中求和,从而导致两个数据库交互?

最佳答案

每个 SQL 语句都可以直接转换为 jOOQ 语句。使用 jOOQ 中的 UPDATE 语句支持。 https://www.jooq.org/doc/latest/manual/sql-building/sql-statements/update-statement

具体来说:

DSLContext ctx = ...

ctx.update(EVENT_TABLE)
   .set(EVENT_COUNT, EVENT_COUNT.plus(3))
   .execute();

一般的经验法则:

  • DSL 类中的所有函数(例如 fn(a, b))都可用 DSL.fn(a, b)
  • 所有中缀运算符(例如 a op b)都可以从 Field 类型中获得,类型为 a.op(b)

关于java - jOOQ 在更新时添加到当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54578921/

相关文章:

postgresql - 迁移到 Hibernate 5.2 后出现缺少表错误

SQL:如何在考虑时间限制的情况下对各组进行平均

java - 无法使用 Java 11 运行 JOOQ GenerationTool(NoClassDefFoundError : javax/xml/bind/annotation/XmlSchema)

java - 将特定模式与范围匹配的正则表达式

java - 从命令行运行gradle时如何将自定义JAR文件添加到CLASSPATH?

java - Android 指纹登录 - 可能与否

java - @Scheduled 与 ThreadPoolTask​​Scheduler 行为

sql - 完整性检查 : count(*) vs count(pkColumn)

postgresql - 如何使用 JOOQ 使用 H2 - ENUM 类型为 PostGres 生成 stub

java - jOOQ 和自动生成,如何避免表 POJO 中的 UDT 记录