jOOQ在更新时添加到当前值

时间:2019-02-07 17:22:55

标签: java postgresql jooq

我有一列正在运行的事件不断计数。我想通过jOOQ更新执行与以下SQL语句等效的操作:

  

更新event_table设置event_count = event_count + 3;

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

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

1 个答案:

答案 0 :(得分:4)

每个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();

一般的经验法则:

  • 所有功能(例如fn(a, b))都可以从DSL类中以DSL.fn(a, b)的形式使用
  • 所有a op b中的infix运算符(例如Field)都可以从a.op(b)类型中获得