使用JOOQ進行數(shù)據(jù)分頁的優(yōu)化方法

上一節(jié)我們學(xué)習(xí)了JAVA里面的ORM框架JOOQ 這節(jié)我們使用JOOQ實現(xiàn)以下數(shù)據(jù)分頁
首先看一張表


image.png

image.png

接下來有這樣的需求
首先我們根據(jù)表進行分頁


QQ截圖20180205145113.png

假設(shè)每頁顯示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關(guān)鍵詞
都有一些示例代碼
接下來我們演示一下
由于我們創(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

可以看出對基本運算進行了處理(大于 小于等)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容