前面兩節(jié)課我們學(xué)習了jdbc和數(shù)據(jù)源 這節(jié)課我們學(xué)習一下ORM框架膨疏,對我們的數(shù)據(jù)庫開發(fā)進行簡化一睁,并且模塊化,提高我們程序的可讀性
image.png
前面我們?nèi)胧至藬?shù)據(jù)源佃却,使用了tomcat-jdbc完成數(shù)據(jù)源的搭建者吁,那么我們下面可以編寫代碼了么?
肯定可以寫數(shù)據(jù)庫操作代碼了 但是我們不希望在代碼中出現(xiàn)大量的sql語句 這樣維護和看起來很不方便
所以我們?nèi)胧忠粋€數(shù)據(jù)庫框架
image.png
使用這個框架需要安裝一些依賴(上圖是依賴的一些來源地址) 可以同過maven方式安裝
pom.xml文件中加入
<dependency> //核心庫
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>3.9.5</version>
</dependency>
<dependency> //面向?qū)ο髮懛?br> <groupId>org.jooq</groupId>
<artifactId>jooq-meta</artifactId>
<version>3.9.5</version>
</dependency>
<dependency> //代碼自動生成
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen</artifactId>
<version>3.9.5</version>
</dependency>
接下來看下如何用這個框架寫代碼
image.png
先看下https://www.jooq.org/doc/3.9/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step5/
寫一段最簡單的測試代碼
首先我們將數(shù)據(jù)源代碼做下封裝
在DB包里創(chuàng)建一個DBUtil.java文件
image.png
代碼如下
image.png
接下來在MyDB中試用下JOOQ
首先我們本地有個test數(shù)據(jù)庫 里面有個jt_news的表
image.png
MyDB中代碼
image.png
運行結(jié)果
image.png
上面的一段是輸出的日志信息 可以將其關(guān)閉 對開發(fā)并沒有影響
image.png
只有當警告warning的時候顯示
以上代碼是執(zhí)行原始sql的方式
接下來使用另外一種方式
image.png
JOOQ里面可以使用SQLBuilder創(chuàng)建sql語句
MyDB里面
image.png
運行結(jié)果
image.png
對結(jié)果進行倒排序
image.png
運行結(jié)果
image.png
接下來演示下JOOQ自動生成(也是第三種方法)可以把表明和相關(guān)對象進行映射(面向?qū)ο髮懛?
image.png
官網(wǎng)這里有示例代碼
https://www.jooq.org/doc/3.9/manual-single-page/#jooq-in-7-steps-step3
首先要創(chuàng)建一個配置文件
創(chuàng)建一個jtthink.xml文件 放在下面的目錄下
image.png
里面內(nèi)容如下
image.png
希望生成的一堆代碼包名為DB.gen
接下來通過官方文檔我們可以看見下面一段內(nèi)容
image.png
可以將jooq相關(guān)的三個jar包放在一個文件夾下 執(zhí)行上面的命令
但是我們使用的是maven方式運行 已經(jīng)幫我們處理好了依賴和classPath等內(nèi)容
所以只要執(zhí)行GenerationTool 這個可執(zhí)行程序就可以了
接下來我們代碼演示下
在MyDB里
image.png
運行MyDB
image.png
然后可以看見文件夾目錄結(jié)構(gòu)變化如下
image.png
這里為了演示我把DB包放在com.jtthink包的同級 避免導(dǎo)入static靜態(tài)包出錯
接下來測試下如何使用自動生成的代碼
在MyDB里
image.png
運行結(jié)果
image.png
可以看見結(jié)果對我們的表中數(shù)據(jù)做了倒排序