1

我们只是切换到使用 JOOQ 代替标准 DAO 和直接 SQL,我正在尝试将此 SQL 转换为 JOOQ 上下文:

products 在 MySQL 5.6 中被定义为 INT(4) 字段。

SELECT DISTINCT f1
FROM table_A WHERE 
    (f1 IS NOT NULL)
    AND (products & 255)
    AND (age <= 180) 
    AND (flag < 1)
ORDER BY f1; 

JOOQ 版本:

context.selectDistinct(TABLE_A.F1).from(TABLE_A).where(TABLE_A.F1.isNotNull())
    .and(TABLE_A.flag.lessthan(UInteger.valueof(1))
    .and(TABLE_A.age.lessthan(UInteger.valueof(180))
.orderBy(TABLE_A.f1);

我似乎无法弄清楚如何进行 (products & 255) 位运算。

4

1 回答 1

1

您可以在 jOOQ 手册的相关部分中找到有关按位运算符/按位函数的一些信息。

具体来说,使用DSL.bitAnd()

DSL.bitAnd(TABLE_A.PRODUCTS, 255);

另请参阅有关jOOQ 用户组的相关讨论。

于 2013-11-15T08:47:20.700 回答