首页 > 解决方案 > jOOQ 在更新时添加到当前值

问题描述

我有一列对发生的事件进行了统计。我想通过 jOOQ 更新执行与以下 SQL 语句等效的操作:

更新 event_table 设置 event_count = event_count + 3;

3 是 artibrary,它将int代表在我的 Java 程序中检测到的当前计数。

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

标签: javapostgresqljooq

解决方案


每个 SQL 语句都可以直接转换为 jOOQ 语句。使用UPDATEjOOQ 中的语句支持。 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();

作为一般经验法则:

  • 所有功能(例如fn(a, b))都可以从DSL类中获得DSL.fn(a, b)
  • 所有中缀运算符(例如a op b)都可从以下Field类型获得a.op(b)

推荐阅读