java - jOOQ 在更新时添加到当前值
问题描述
我有一列对发生的事件进行了统计。我想通过 jOOQ 更新执行与以下 SQL 语句等效的操作:
更新 event_table 设置 event_count = event_count + 3;
3 是 artibrary,它将int
代表在我的 Java 程序中检测到的当前计数。
有没有一种方法可以做到这一点,而无需在一个 jOOQ 选择中选择值然后在另一个 jOOQ 更新中求和,从而导致两个数据库交互?
解决方案
每个 SQL 语句都可以直接转换为 jOOQ 语句。使用UPDATE
jOOQ 中的语句支持。
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)
推荐阅读
- ruby-on-rails - 如何将占位符添加到 Rails 6 text_field
- css - 在网格项内垂直对齐文本
- python - while循环中的重复行
- r - 为什么我的时间序列图中出现错误?
- python - 如何在 Python 请求模块中使用 cookie?
- php - 如何使用 laravel 连接到 Amazon Keyspaces (Cassandra)?
- visual-studio-code - 如何将函数连接到 VS Code Webview?
- spring - Spring JPQL 无法比较 java LocalDateTime - 返回空列表
- java - 如何在 Java 中的数组中收集用户输入,然后使用类打印出来
- app-lab - 设置 AppLab 鼠标坐标