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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

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

發(fā)布時(shí)間:2023/12/3 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jooq代码生成_将jOOQ与Spring结合使用:代码生成 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

jooq代碼生成

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

jOOQ從您的數(shù)據(jù)庫(kù)生成Java代碼,并允許您通過(guò)其流暢的API構(gòu)建類型安全SQL查詢。

本教程的第一部分描述了如何配置使用jOOQ的Spring驅(qū)動(dòng)的應(yīng)用程序的應(yīng)用程序上下文,但沒(méi)有描述如何使用jOOQ創(chuàng)建類型安全SQL查詢。

這篇博客文章使我們更接近解決方案。 如果要使用jOOQ構(gòu)建類型安全的數(shù)據(jù)庫(kù)查詢,則必須對(duì)數(shù)據(jù)庫(kù)進(jìn)行反向工程,并創(chuàng)建代表不同數(shù)據(jù)庫(kù)表,記錄等的類。 這些類是類型安全SQL查詢的構(gòu)建塊。

幸運(yùn)的是,jOOQ提供了一種自動(dòng)執(zhí)行此過(guò)程的簡(jiǎn)便方法 。 這篇博客文章描述了如何使用Maven生成所需的類。

讓我們開(kāi)始吧。

補(bǔ)充閱讀:

  • 使用Maven創(chuàng)建配置文件特定的配置文件說(shuō)明了如何使用Maven構(gòu)建配置文件為不同的環(huán)境創(chuàng)建不同的配置。 通過(guò)使用此博客文章中描述的方法來(lái)配置此博客文章的示例應(yīng)用程序。
  • 將jOOQ與Spring結(jié)合使用:配置是本教程的第一部分,它描述了您可以配置使用jOOQ的Spring應(yīng)用程序的應(yīng)用程序上下文。 您無(wú)需閱讀本教程的第一部分就可以理解該博客文章,但是,如果您想在Spring支持的應(yīng)用程序中真正使用jOOQ,建議您也閱讀該博客文章。

用Maven生成代碼

我們的構(gòu)建過(guò)程分為三個(gè)重要階段,如下所述:

  • 從特定于配置文件的配置文件中讀取數(shù)據(jù)庫(kù)配置 。 我們希望為我們的應(yīng)用程序和構(gòu)建腳本使用相同的配置文件,因?yàn)檫@有助于我們避免重復(fù)。 更新數(shù)據(jù)庫(kù)架構(gòu)并從數(shù)據(jù)庫(kù)生成代碼時(shí),需要數(shù)據(jù)庫(kù)連接詳細(xì)信息。
  • 如果需要,更新數(shù)據(jù)庫(kù)架構(gòu) 。 因?yàn)槲覀円獜臄?shù)據(jù)庫(kù)生成代碼,所以我們必須確保在代碼生成開(kāi)始之前已更新其架構(gòu)。
  • 從數(shù)據(jù)庫(kù)生成代碼 。 此階段從已配置的數(shù)據(jù)庫(kù)中讀取元數(shù)據(jù),并創(chuàng)建用于使用jOOQ編寫類型安全的數(shù)據(jù)庫(kù)查詢的類。
  • 讓我們繼續(xù)前進(jìn),找出如何在pom.xml文件中配置這些階段。

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

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

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

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 創(chuàng)建一個(gè)在初始化 Maven生命周期階段運(yùn)行read-project-properties目標(biāo)的執(zhí)行。
  • 確保從特定于配置文件的配置文件( profile / $ {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>

    讓我們繼續(xù)前進(jìn),了解如何更新應(yīng)用程序的數(shù)據(jù)庫(kù)架構(gòu)。

    更新數(shù)據(jù)庫(kù)架構(gòu)

    在我們可以從數(shù)據(jù)庫(kù)生成任何代碼之前,我們必須確保數(shù)據(jù)庫(kù)的架構(gòu)是最新的。 最簡(jiǎn)單的方法是使用SQL Maven插件 ,該插件可以執(zhí)行從SQL文件中找到SQL語(yǔ)句。

    在現(xiàn)實(shí)生活中的應(yīng)用程序,你可能想使用兩種遷飛或Liquibase用于這一目的。

    讓我們找出如何確保示例數(shù)據(jù)庫(kù)始終是最新的。

    首先 ,我們必須創(chuàng)建一個(gè)SQL文件,該文件將創(chuàng)建數(shù)據(jù)庫(kù)模式。 如果從數(shù)據(jù)庫(kù)中找不到該SQL腳本,它將創(chuàng)建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部分中添加一個(gè)skip.db.creation屬性。 此屬性用于啟用和禁用架構(gòu)更新。 因?yàn)槲覀円谒信渲梦募袉⒂脭?shù)據(jù)庫(kù)模式更新,所以我們必須將此屬性的值設(shè)置為false 。

    我們的POM文件的相關(guān)部分如下所示:

    <properties><skip.db.creation>false</skip.db.creation> </properties>

    第三 ,我們必須配置SQL Maven插件。 我們可以按照以下步驟進(jìn)行操作:

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 如果skip.db.creation屬性的值為true,請(qǐng)確保跳過(guò)模式生成。
  • 創(chuàng)建一個(gè)在生成源 Maven生命周期階段運(yùn)行執(zhí)行目標(biāo)的執(zhí)行 。
  • 通過(guò)執(zhí)行以下步驟配置創(chuàng)建的執(zhí)行:
  • 配置JDBC驅(qū)動(dòng)程序,數(shù)據(jù)庫(kù)url,用戶名和密碼。
  • 確保更改是自動(dòng)提交的。
  • 配置用于創(chuàng)建數(shù)據(jù)庫(kù)架構(gòu)SQL腳本的位置。
  • 添加H2數(shù)據(jù)庫(kù)作為此插件的依賴項(xiàng)。
  • 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>

    讓我們繼續(xù)前進(jìn),了解如何配置jOOQ-codegen Maven插件。

    從數(shù)據(jù)庫(kù)生成代碼

    我們的最后一個(gè)任務(wù)是配置jOOQ-codegen Maven插件。 讓我們找出這是如何完成的。

    首先 ,我們必須在pom.xml文件的properties部分中添加一個(gè)jooq.generator.db.dialect屬性。 此屬性指定正確的數(shù)據(jù)庫(kù)方言,并且用于配置jOOQ-codegen Maven插件。 因?yàn)槭纠龖?yīng)用程序使用H2數(shù)據(jù)庫(kù),所以我們必須將此屬性的值設(shè)置為org.jooq.util.h2.H2Database 。

    將數(shù)據(jù)庫(kù)方言指定為屬性的原因是,這使我們可以在不同的環(huán)境中使用不同的數(shù)據(jù)庫(kù)。

    我們的POM文件的相關(guān)部分如下所示:

    <properties><jooq.generator.db.dialect>org.jooq.util.h2.H2Database</jooq.generator.db.dialect> </properties>

    其次 ,我們必須配置jOOQ-codegen Maven插件。 我們可以按照以下步驟進(jìn)行操作:

  • 將插件聲明添加到pom.xml文件的plugins部分。
  • 創(chuàng)建一個(gè)在生成源 Maven生命周期階段運(yùn)行jOOQ-codegen Maven插件的生成目標(biāo)的執(zhí)行。
  • 請(qǐng)按照以下步驟配置插件:
  • 配置JDBC連接并設(shè)置驅(qū)動(dòng)程序類的名稱,數(shù)據(jù)庫(kù)url,用戶名和密碼。 請(qǐng)記住,實(shí)際屬性值是從特定于配置文件的配置文件中讀取的。
  • 通過(guò)執(zhí)行以下步驟來(lái)配置用作源的數(shù)據(jù)庫(kù):
  • 確保從jooq.generator.db.dialect屬性中讀取了使用的數(shù)據(jù)庫(kù)方言。
  • 配置代碼生成以包括從PUBLIC模式中找到的所有表。
  • 配置代碼生成以生成數(shù)據(jù)庫(kù)表和記錄的類 。
  • 配置目標(biāo)軟件包和目錄。 以下描述了這些配置選項(xiàng):
    • 目標(biāo)軟件包指定該軟件包,它是所創(chuàng)建類的根軟件包。
    • 目標(biāo)目錄指定生成類的目錄。
  • 添加H2數(shù)據(jù)庫(kù)作為此插件的依賴項(xiàng)。
  • 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參考手冊(cè)中獲取有關(guān)代碼生成的更多信息:

    • 第6章:代碼生成
    • 第6.2節(jié):高級(jí)生成器配置
    • 第6.3節(jié):自定義生成器策略
    • 第6.7節(jié):生成的表
    • 第6.8節(jié):生成的記錄

    讓我們找出運(yùn)行代碼生成時(shí)發(fā)生的情況。

    產(chǎn)生了什么?

    調(diào)用jOOQ-codegen Maven插件的生成目標(biāo)時(shí),它將分析數(shù)據(jù)庫(kù)的架構(gòu)并生成已配置目標(biāo)目錄和包的類。 在我們的情況下,這意味著:

    • 代碼將生成到目錄target / generation-sources / jooq 。
    • 生成的類的根包是net.petrikainulainen.spring.jooq.todo.db 。

    我們?cè)诖瞬┛臀恼轮袆?chuàng)建的配置可確保創(chuàng)建以下類:

    • 生成到net.petrikainulainen.spring.jooq.todo.db包的類包含數(shù)據(jù)庫(kù)的元數(shù)據(jù)。 jOOQ將這些類稱為“全局”工件 。
    • net.petrikainulainen.spring.jooq.todo.db.tables.Todos類是一個(gè)表類 ,它描述單個(gè)數(shù)據(jù)庫(kù)表的結(jié)構(gòu)。 我們可以使用此類針對(duì)存儲(chǔ)在todos數(shù)據(jù)庫(kù)表中的數(shù)據(jù)編寫數(shù)據(jù)庫(kù)查詢。
    • net.petrikainulainen.spring.jooq.todo.db.tables.recods.TodoRecord類是一個(gè)記錄類 ,其中包含單個(gè)表行的信息。 從todos數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)的數(shù)據(jù)庫(kù)查詢返回TodoRecord對(duì)象(如果我們選擇這樣做)。

    摘要

    現(xiàn)在,我們已經(jīng)成功配置了jOOQ-codegen Maven插件,以從數(shù)據(jù)庫(kù)中生成代碼。 本教程教了我們兩件事:

    • 我們了解了如何配置jOOQ-codegen Maven插件以從數(shù)據(jù)庫(kù)生成代碼。
    • 我們了解了開(kāi)始生成代碼時(shí)將創(chuàng)建什么樣的類。

    本教程的下一部分描述如何使用jOOQ生成的類將CRUD函數(shù)添加到簡(jiǎn)單的Web應(yīng)用程序。

    • Github上提供了此博客文章的示例應(yīng)用程序。

    參考:在Petri Kainulainen博客上,我們的JCG合作伙伴 Petri Kainulainen 使用jOOQ和Spring:代碼生成 。


    翻譯自: https://www.javacodegeeks.com/2014/02/using-jooq-with-spring-code-generation.html

    jooq代碼生成

    總結(jié)

    以上是生活随笔為你收集整理的jooq代码生成_将jOOQ与Spring结合使用:代码生成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。