日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

将jOOQ与Spring结合使用:代码生成

發布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将jOOQ与Spring结合使用:代码生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們可能在本教程的第一部分中還記得jOOQ指出

jOOQ從您的數據庫生成Java代碼,并允許您通過其流暢的API構建類型安全的SQL查詢。

本教程的第一部分描述了如何配置使用jOOQ的Spring驅動的應用程序的應用程序上下文,但沒有描述如何使用jOOQ創建類型安全的SQL查詢。

這篇博客文章使我們更接近解決方案。 如果要使用jOOQ構建類型安全的數據庫查詢,則必須對數據庫進行反向工程并創建代表不同數據庫表,記錄等的類。 這些類是類型安全SQL查詢的構建塊。

幸運的是,jOOQ提供了一種自動執行此過程的簡便方法 。 這篇博客文章描述了如何使用Maven生成所需的類。

讓我們開始吧。

補充閱讀:

  • 使用Maven創建配置文件特定的配置文件說明了如何使用Maven構建配置文件為不同的環境創建不同的配置。 通過使用此博客文章中描述的方法來配置此博客文章的示例應用程序。
  • 將jOOQ與Spring結合使用:配置是本教程的第一部分,它描述了您可以配置使用jOOQ的Spring應用程序的應用程序上下文。 您無需閱讀本教程的第一部分就可以理解該博客文章,但是,如果您想在基于Spring的應用程序中真正使用jOOQ,建議您也閱讀該博客文章。

用Maven生成代碼

我們的構建過程分為三個重要階段,如下所述:

  • 從特定于配置文件的配置文件中讀取數據庫配置 。 我們希望為我們的應用程序和構建腳本使用相同的配置文件,因為這有助于避免重復。 更新數據庫架構并從數據庫生成代碼時,我們需要數據庫連接詳細信息。
  • 如果需要,更新數據庫模式 。 因為我們要從數據庫生成代碼,所以我們必須確保在代碼生成開始之前已更新其架構。
  • 從數據庫生成代碼 。 此階段從已配置的數據庫中讀取元數據,并創建用于使用jOOQ編寫類型安全的數據庫查詢的類。
  • 讓我們繼續前進,找出如何在pom.xml文件中配置這些階段。

    從配置文件特定的屬性文件中讀取屬性

    我們可以使用Properties Maven插件從特定于配置文件的屬性文件中讀取屬性。 該插件讀取屬性文件的內容,并確保我們可以在pom.xml文件中使用其屬性。

    我們可以按照以下步驟配置此插件:

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 創建一個在初始化 Maven生命周期階段運行read-project-properties目標的執行。
  • 確保從特定于配置文件的配置文件( profiles / $ {build.profile.id} /config.properties )中讀取屬性。
  • 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插件。 我們可以按照以下步驟進行操作:

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 如果skip.db.creation屬性的值為true,請確保跳過模式生成。
  • 創建一個在生成源 Maven生命周期階段運行執行目標的執行 。
  • 通過執行以下步驟配置創建的執行:
  • 配置JDBC驅動程序,數據庫url,用戶名和密碼。
  • 確保更改是自動提交的。
  • 配置用于創建數據庫架構的SQL腳本的位置。
  • 添加H2數據庫作為此插件的依賴項。
  • 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插件。 我們可以按照以下步驟進行操作:

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 創建一個執行,該執行在生成源 Maven生命周期階段運行jOOQ-codegen Maven插件的生成目標。
  • 請按照以下步驟配置插件:
  • 配置JDBC連接并設置驅動程序類的名稱,數據庫url,用戶名和密碼。 請記住,實際屬性值是從特定于配置文件的配置文件中讀取的。
  • 通過執行以下步驟配置用作源的數據庫:
  • 確保從jooq.generator.db.dialect屬性中讀取了使用的數據庫方言。
  • 配置代碼生成以包括從PUBLIC模式中找到的所有表。
  • 配置代碼生成以生成數據庫表和記錄的類 。
  • 配置目標軟件包和目錄。 以下描述了這些配置選項:
    • 目標包指定包,它是所創建類的根包。
    • 目標目錄指定生成類的目錄。
  • 添加H2數據庫作為此插件的依賴項。
  • 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与Spring结合使用:代码生成的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。