【问题标题】:JOOQ mysql bitwiseJOOQ mysql 按位
【发布时间】:2013-11-15 17:31:14
【问题描述】:

我们只是切换到使用 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) 位运算。

【问题讨论】:

    标签: java mysql sql jooq


    【解决方案1】:

    您可以在relevant section of the jOOQ manual 中找到有关按位运算符/按位函数的一些信息。

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

    DSL.bitAnd(TABLE_A.PRODUCTS, 255);
    

    另见jOOQ User Group上的相关讨论。

    【讨论】:

    • 为什么JOOQ的一些功能隐藏在DSL包里面?
    • 我不确定你的意思? DSL 是一个类,它包含各种函数,您可以在 Java 类中静态导入这些函数。换句话说,它们根本不是“隐藏的”,而是相当暴露的 :-) 另见:jooq.org/doc/3.2/manual/sql-building/dsl。不过,如果“中缀表示法”也支持按位运算,我认为它可能会很有用。我会看到这将在 jOOQ 3.3 中添加:github.com/jOOQ/jOOQ/issues/2848
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多