用jooq选择条件

Roh*_*bhu 3 java sql jooq

在SQL中,我可以执行类型的查询:

SELECT cost > 1000 AS above_k, name FROM products;
Run Code Online (Sandbox Code Playgroud)

给我一个清单:

+---------+--------+
| above_k | name   |
+---------+--------+
| true    | Gold   |
| false   | Silver |
+---------+--------+
Run Code Online (Sandbox Code Playgroud)

如何使用jooq?建模类似的查询?我不能这样做(显然):

ctx.select(Tables.PRODUCTS.COST.gt(1000))
Run Code Online (Sandbox Code Playgroud)

既然,没有方法select(Condition condition).或者,如果我只是想:

SELECT cost*0.9 AS discounted_cost FROM products;
Run Code Online (Sandbox Code Playgroud)

有没有办法用jooq做到这一点?

Luk*_*der 7

SQL 1:

SELECT cost > 1000 AS above_k, name 
FROM products;
Run Code Online (Sandbox Code Playgroud)

jOOQ 1:

ctx.select(field(PRODUCTS.COST.gt(1000)).as("above_k"), PRODUCTS.NAME)
   .from(PRODUCTS)
   .fetch();
Run Code Online (Sandbox Code Playgroud)

看到 DSL.field(Condition)

SQL 2:

SELECT cost*0.9 AS discounted_cost 
FROM products;
Run Code Online (Sandbox Code Playgroud)

jOOQ 2:

ctx.select(PRODUCTS.COST.mul(0.9).as("discounted_cost"))
   .from(PRODUCTS)
   .fetch();
Run Code Online (Sandbox Code Playgroud)

Field.mul(Number)Field.multiply(Number)