2011-03-23 63 views

回答

1

我不知道它會有足夠的幫助,但是,正如你所要求的utils,我建議你閱讀關於QUERY OBJECT PATTERN (P of EAA, M. Fowler),如果你有時間去實現一些東西,那麼它是一個好的開始,否則你可能會尋找任何東西ORM框架。

+0

你知道任何框架,這可以幫助設計子查詢和連接? 例如:選擇* from person where id =(select * from map where id = 223) – Phani 2011-03-23 05:35:02

2

QueryDsl自動從您的Hibernate,JPA或JDO類創建查詢對象,也可以from your DB schema

與Querydsl SQL查詢是 這樣簡單:

QCustomer customer = new QCustomer("c"); 

SQLTemplates dialect = new HSQLDBTemplates(); // SQL-dialect 
SQLQuery query = new SQLQueryImpl(connection, dialect); 
List<String> lastNames = query.from(customer) 
    .where(customer.firstName.eq("Bob")) 
    .list(customer.lastName); 

它還supports subqueries

要創建創建 SQLSubQuery實例的子查詢,定義查詢 參數通過from,where等,並使用 唯一或列表來創建子查詢 這是針對查詢的一種類型安全的Querydsl 表達式。唯一的是 用於唯一的(單個)結果, 列表用於列表結果。

query.from(customer).where(
    customer.status.eq(
     new SQLSubQuery().from(customer2).unique(customer2.status.max())) 
    .list(customer.all()) 

query.from(customer).where( 
    customer.status.in(new SQLSubQuery().from(status).where(
    status.level.lt(3)).list(status.id)) 
    .list(customer.all())