javascript
jooq代码生成_将jOOQ与Spring结合使用:代码生成
jooq代碼生成
我們可能在本教程的第一部分中還記得jOOQ指出
jOOQ從您的數據庫生成Java代碼,并允許您通過其流暢的API構建類型安全SQL查詢。
本教程的第一部分描述了如何配置使用jOOQ的Spring驅動的應用程序的應用程序上下文,但沒有描述如何使用jOOQ創建類型安全SQL查詢。
這篇博客文章使我們更接近解決方案。 如果要使用jOOQ構建類型安全的數據庫查詢,則必須對數據庫進行反向工程,并創建代表不同數據庫表,記錄等的類。 這些類是類型安全SQL查詢的構建塊。
幸運的是,jOOQ提供了一種自動執行此過程的簡便方法 。 這篇博客文章描述了如何使用Maven生成所需的類。
讓我們開始吧。
補充閱讀:
- 使用Maven創建配置文件特定的配置文件說明了如何使用Maven構建配置文件為不同的環境創建不同的配置。 通過使用此博客文章中描述的方法來配置此博客文章的示例應用程序。
- 將jOOQ與Spring結合使用:配置是本教程的第一部分,它描述了您可以配置使用jOOQ的Spring應用程序的應用程序上下文。 您無需閱讀本教程的第一部分就可以理解該博客文章,但是,如果您想在Spring支持的應用程序中真正使用jOOQ,建議您也閱讀該博客文章。
用Maven生成代碼
我們的構建過程分為三個重要階段,如下所述:
讓我們繼續前進,找出如何在pom.xml文件中配置這些階段。
從配置文件特定的屬性文件中讀取屬性
我們可以使用Properties Maven插件從特定于配置文件的屬性文件中讀取屬性。 該插件讀取屬性文件的內容,并確保我們可以在pom.xml文件中使用其屬性。
我們可以按照以下步驟配置此插件:
Properties Maven插件的配置如下所示:
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><executions><execution><phase>initialize</phase><goals><goal>read-project-properties</goal></goals><configuration><files><file>profiles/${build.profile.id}/config.properties</file></files></configuration></execution></executions> </plugin>讓我們繼續前進,了解如何更新應用程序的數據庫架構。
更新數據庫架構
在我們可以從數據庫生成任何代碼之前,我們必須確保數據庫的架構是最新的。 最簡單的方法是使用SQL Maven插件 ,該插件可以執行從SQL文件中找到SQL語句。
在現實生活中的應用程序,你可能想使用兩種遷飛或Liquibase用于這一目的。
讓我們找出如何確保示例數據庫始終是最新的。
首先 ,我們必須創建一個SQL文件,該文件將創建數據庫模式。 如果從數據庫中找不到該SQL腳本,它將創建todos表。
schema.sql文件如下所示:
CREATE TABLE IF NOT EXISTS todos (id BIGINT AUTO_INCREMENT PRIMARY KEY,creation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,description VARCHAR(500),modification_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,title VARCHAR(100) );其次 ,我們必須在pom.xml文件的properties部分中添加一個skip.db.creation屬性。 此屬性用于啟用和禁用架構更新。 因為我們要在所有配置文件中啟用數據庫模式更新,所以我們必須將此屬性的值設置為false 。
我們的POM文件的相關部分如下所示:
<properties><skip.db.creation>false</skip.db.creation> </properties>第三 ,我們必須配置SQL Maven插件。 我們可以按照以下步驟進行操作:
SQL Maven插件的配置如下所示:
<plugin> <groupId>org.codehaus.mojo</groupId><artifactId>sql-maven-plugin</artifactId><version>1.5</version><configuration><skip>${skip.db.creation}</skip></configuration><executions><execution><id>create-database-h2</id><phase>generate-sources</phase><goals><goal>execute</goal></goals><configuration><driver>${db.driver}</driver><url>${db.url}</url><username>${db.username}</username><password>${db.password}</password><autocommit>true</autocommit><srcFiles><srcFile>src/main/resources/schema.sql</srcFile></srcFiles></configuration></execution></executions><dependencies><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.174</version></dependency></dependencies> </plugin>讓我們繼續前進,了解如何配置jOOQ-codegen Maven插件。
從數據庫生成代碼
我們的最后一個任務是配置jOOQ-codegen Maven插件。 讓我們找出這是如何完成的。
首先 ,我們必須在pom.xml文件的properties部分中添加一個jooq.generator.db.dialect屬性。 此屬性指定正確的數據庫方言,并且用于配置jOOQ-codegen Maven插件。 因為示例應用程序使用H2數據庫,所以我們必須將此屬性的值設置為org.jooq.util.h2.H2Database 。
將數據庫方言指定為屬性的原因是,這使我們可以在不同的環境中使用不同的數據庫。
我們的POM文件的相關部分如下所示:
<properties><jooq.generator.db.dialect>org.jooq.util.h2.H2Database</jooq.generator.db.dialect> </properties>其次 ,我們必須配置jOOQ-codegen Maven插件。 我們可以按照以下步驟進行操作:
- 目標軟件包指定該軟件包,它是所創建類的根軟件包。
- 目標目錄指定生成類的目錄。
jOOQ-codegen Maven插件的配置如下所示:
<plugin><groupId>org.jooq</groupId><artifactId>jooq-codegen-maven</artifactId><version>3.2.2</version><executions><execution><id>generate-h2</id><phase>generate-sources</phase><goals><goal>generate</goal></goals></execution></executions><dependencies><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>${h2.version}</version></dependency></dependencies><configuration><jdbc><driver>${db.driver}</driver><url>${db.url}</url><user>${db.username}</user><password>${db.password}</password></jdbc><generator><database><name>${jooq.generator.db.dialect}</name><includes>.*</includes><excludes></excludes><inputSchema>PUBLIC</inputSchema></database><generate><records>true</records></generate><target><packageName>net.petrikainulainen.spring.jooq.todo.db</packageName><directory>target/generated-sources/jooq</directory></target></generator></configuration> </plugin>您可以從jOOQ參考手冊中獲取有關代碼生成的更多信息:
- 第6章:代碼生成
- 第6.2節:高級生成器配置
- 第6.3節:自定義生成器策略
- 第6.7節:生成的表
- 第6.8節:生成的記錄
讓我們找出運行代碼生成時發生的情況。
產生了什么?
調用jOOQ-codegen Maven插件的生成目標時,它將分析數據庫的架構并生成已配置目標目錄和包的類。 在我們的情況下,這意味著:
- 代碼將生成到目錄target / generation-sources / jooq 。
- 生成的類的根包是net.petrikainulainen.spring.jooq.todo.db 。
我們在此博客文章中創建的配置可確保創建以下類:
- 生成到net.petrikainulainen.spring.jooq.todo.db包的類包含數據庫的元數據。 jOOQ將這些類稱為“全局”工件 。
- net.petrikainulainen.spring.jooq.todo.db.tables.Todos類是一個表類 ,它描述單個數據庫表的結構。 我們可以使用此類針對存儲在todos數據庫表中的數據編寫數據庫查詢。
- net.petrikainulainen.spring.jooq.todo.db.tables.recods.TodoRecord類是一個記錄類 ,其中包含單個表行的信息。 從todos數據庫表中獲取數據的數據庫查詢返回TodoRecord對象(如果我們選擇這樣做)。
摘要
現在,我們已經成功配置了jOOQ-codegen Maven插件,以從數據庫中生成代碼。 本教程教了我們兩件事:
- 我們了解了如何配置jOOQ-codegen Maven插件以從數據庫生成代碼。
- 我們了解了開始生成代碼時將創建什么樣的類。
本教程的下一部分描述如何使用jOOQ生成的類將CRUD函數添加到簡單的Web應用程序。
- Github上提供了此博客文章的示例應用程序。
參考:在Petri Kainulainen博客上,我們的JCG合作伙伴 Petri Kainulainen 使用jOOQ和Spring:代碼生成 。
翻譯自: https://www.javacodegeeks.com/2014/02/using-jooq-with-spring-code-generation.html
jooq代碼生成
總結
以上是生活随笔為你收集整理的jooq代码生成_将jOOQ与Spring结合使用:代码生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Oracle验证外部数据
- 下一篇: 卒组词语 卒怎么组词语