上一節(jié)我們學習了JAVA里面的ORM框架JOOQ 這節(jié)我們使用JOOQ實現(xiàn)以下數(shù)據(jù)分頁
首先看一張表
image.png
image.png
接下來有這樣的需求
首先我們根據(jù)表進行分頁
QQ截圖20180205145113.png
假設每頁顯示10條數(shù)據(jù)
接下來我們在查詢分析器里寫入sql語句
取出第一頁前10條數(shù)據(jù)
image.png
select * from test_news ORDER BY id DESC LIMIT 0,10;
還可以這樣寫select * from test_news ORDER BY id DESC LIMIT 10;
取出第二頁數(shù)據(jù)
image.png
兩種方式都可以
取出第三頁數(shù)據(jù)
image.png
以上分頁在數(shù)據(jù)量小的時候可以這樣做砰碴,如果數(shù)據(jù)量過大 這樣做效率很低
所以需要對上面的sql語句做些優(yōu)化
第一種方法
通過id加入子查詢的方式來進行處理
我們以第二頁為例
image.png
三種方式都為取出第二頁數(shù)據(jù)
下面執(zhí)行結(jié)果1,2,3都是相同的數(shù)據(jù)
取出第三頁
image.png
那么sql語句在java代碼中如何寫呢
接下來我們可以來到JOOQ官網(wǎng) 搜索order by 或者 limit關鍵詞
都有一些示例代碼
接下來我們演示一下
由于我們創(chuàng)建了一張test_news新表
需要重新生成一下代碼
image.png
執(zhí)行這一句
image.png
將代碼生成至此目錄
image.png
由于sql里面需要用到一些函數(shù)外盯,所以先看下這張圖
image.png
接下來在MyDB里測試下代碼
image.png
運行結(jié)果
image.png
接下來演示另外一種方法
實際上我們做前臺頁面一般不會這樣寫絮爷,因為性能還可以在高一些壶硅,可以把查詢?nèi)サ?br>
image.png
可以在第二頁傳入頁碼和lastId值 這樣sql語句更加簡便
例如
image.png
直接給個定值id小于定值 進行查詢 更快速
這種方式需要程序和web頁面的參數(shù)之間進行配合完成更進一步的優(yōu)化
那在JOOQ里面還可以通過下面的方式實現(xiàn)上面的方法 只不過參數(shù)需要我們自己傳
image.png
運行結(jié)果
image.png
我們還可以得到sql語句 并輸出
image.png
運行結(jié)果
image.png
可以看出對基本運算進行了處理(大于 小于等)