我有一个列,其中包含发生的事件的运行计数。我想通过 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/