2013-11-14 1 views
1
우리는 단지 표준 DAO 똑바로 SQL 대신에 JOOQ를 사용하여 전환하고 내가 JOOQ 문맥이 SQL로 변환하려고 해요

:JOOQ MySQL의 비트

제품은 MySQL의에서 INT (4) 필드로 정의된다 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

왜 DSL 패키지 안에 JOOQ의 일부 기능이 숨겨져 있습니까? – awm

+0

무슨 말씀 이시죠? 'DSL'은 클래스이고 자바 클래스에서 정적 임포트 할 수있는 모든 종류의 함수를 포함합니다. 다른 말로 표현하자면, 그들은 전혀 "숨겨져 있지 않다"고, 꽤 노출되어 있습니다 :-) http://www.jooq.org/doc/3.2/manual/sql-building/dsl을 참고하십시오. 비트 연산이 "중위 표기법"에서도 지원된다면 유용 할 수 있다고 생각합니다. 이 내용이 jOOQ 3.3에 추가 될 것입니다 : https://github.com/jOOQ/jOOQ/issues/2848 –