我有一列正在运行的事件不断计数。我想通过jOOQ更新执行与以下SQL语句等效的操作:
更新event_table设置event_count = event_count + 3;
3是术语,它将是int
,代表我的Java程序中检测到的当前计数。
有没有一种方法,而无需在一个jOOQ select中选择值,然后在另一个jOOQ更新中求和,从而导致两次数据库交互?
答案 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)
类型中获得