2012-11-09 77 views
2

在我們的Java項目中,我們已經開始使用jooq來構建查詢,而不是普通的SQL字符串。該庫很棒,但我有一個問題(因爲我是jooq-newbie):是否可以使用jooq創建數據庫,但不包括項目包含的jooq映射/生成器?帶jooq的數據庫創建語句

+0

您的意思是生成代碼,還是意味着要創建數據庫? (jOOQ沒有對DDL的正式支持,但仍然可以使用普通的SQL 命令來執行DDL)。你的意思是你不會包含jooq-meta和jooq-codegen嗎? –

+0

我們希望通過調用存儲過程來創建數據庫。 – KernelPanic

+0

請更具體一點。這個問題很難回答。請參閱[Stack Overflow FAQ](http://stackoverflow.com/faq#howtoask)以獲取更多詳細信息 –

回答

2

有很多,你可以用jOOQ做,而不依賴於它的代碼生成器。從手動入門指南中提到的一些例子:

http://www.jooq.org/doc/2.6/manual/getting-started/use-cases/jooq-as-a-standalone-sql-builder/

例如:

String sql = create.select(
         fieldByName("BOOK","TITLE"), 
         fieldByName("AUTHOR","FIRST_NAME"), 
         fieldByName("AUTHOR","LAST_NAME")) 
        .from(tableByName("BOOK")) 
        .join(tableByName("AUTHOR")) 
        .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID")) 
        .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948)) 
        .getSQL(); 

它也即將使用jOOQ爲 「普通SQL」 的手冊的部分引用:

http://www.jooq.org/doc/2.6/manual/sql-building/plain-sql/

當然,您仍然可以使用代碼生成器來生成元信息你的模式。這並不意味着您必須在生成器上添加運行時依賴項,因爲生成器僅在編譯時使用

+0

這聽起來很愚蠢,但是, 'fieldByName'的方法定義?我使用'jooq 3.0.1',我發現'fieldByName'實際上可以在低版本的'Factory'類中找到。但是當我切換到較低版本(2.6.4)時,我不能使用'DSL'類。 – Bnrdo

+1

@onepotato:以下是2.x - > 3.x遷移指南:http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0。該方法就在那裏,在['DSL.fieldByName()'](http://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#fieldByName(java.lang.String .. 。)) –