2013-11-14 2 views
1

Мы просто переход к использованию JOOQ вместо стандартного DAO и прямой SQL, и я пытаюсь преобразовать этот SQL в JOOQ контексте:JOOQ MySQL побитовое

продукция определяется как INT (4) поля в MySQL 5.6.

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); 

То, что я не могу показаться, чтобы выяснить, как сделать (продукты & 255) операцию побитового.

ответ

1

Вы можете найти некоторую информацию о побитовых операциях/побитовых функциях в relevant section of the jOOQ manual.

В частности, с помощью DSL.bitAnd():

DSL.bitAnd(TABLE_A.PRODUCTS, 255); 

Смотрите также смежный обсуждение jOOQ User Group.

+0

Почему некоторые функции JOOQ скрыты внутри пакета DSL? – awm

+0

Я не уверен, что вы имеете в виду? 'DSL' - это класс и содержит всевозможные функции, которые вы можете статически импортировать в своих Java-классах. Другими словами, они совсем не «скрыты», они полностью раскрыты :-) См. Также: http://www.jooq.org/doc/3.2/manual/sql-building/dsl. Я думаю, что это могло бы быть полезно, хотя, если побитовые операции также поддерживались в «инфиксной нотации». Я увижу, что это будет добавлено в jOOQ 3.3: https://github.com/jOOQ/jOOQ/issues/2848 –

Смежные вопросы