Mybatis Plus學習筆記(三) 分頁查詢

2022-02-22 23:57:00 字數 1441 閱讀 2153

本系列部落格其他文章下方鏈結檢視

【mybatis-plus學習筆記】目錄

mybatis的rowbounds就可以實現分頁,但是這是一種記憶體分頁,他的原理是把符合邏輯的記憶體全部查出,然後展示需要的資料。如果資料量小的時候,完全可以使用,但是當資料量大的時候,就是對記憶體的一種浪費。

mp分頁外掛程式可以實現物理分頁,不僅更方便,而且消耗的記憶體資源更少。

如果需要新建乙個配置類,如下:

@configuration

public class mybatisconfig

}

//例項化的兩個引數分別是當前頁和每頁數量

pagepage = new page<>(1, 2);

//頁數

system.out.println(ipage.getpages());

//總數

system.out.println(ipage.gettotal());

//獲得查詢的記錄

listrecords = ipage.getrecords();

records.foreach(m-> system.out.println(m));

相當於

''debug==>  preparing: select id,name,age,email,manager_id,create_time from user limit ?,? 

''debug==> parameters: 0(long), 2(long)

還有一種分頁查詢,selectmapspage(),與上述方法不同的是返回值是乙個map的集合,通過key-value的形式儲存值。如何抉擇取決於你的需求。

實際上,如果你使用page,mybatisplus會預設使用select count(1) from user語句來查詢總數量,當你不需要總數量的時候,可以在構造page的時候多加乙個boolean引數,true為查詢總數,false相反。如下

pagepage = new page<>(1, 2,false);
如果是多表連線查詢,上述兩種方法,均不可行。但是如果你仍然不想在sql語句中新增limit,可以使用xml檔案結合mp分頁外掛程式來完成。

編寫xml

select *

from user $;

# 可以新增你想要的連表查詢

最後,把selectpage換成你自定義的selectuserpage即可。

但是多表查詢還是建議自己寫sql,因為大家要知道無論是mybatis還是mp,他們都只是乙個工具,讓我們的**書寫起來更加方便,更加優雅。而真正的sql語句才是本質,如果盲目的追求工具的使用,就有些本末倒置了。所以在這些工具還是不夠智慧型的情況下,建議多表查詢的時候還是使用原生sql比較好。

Mybatis Plus學習筆記

實體類屬性 建立日期 tablefield fill fieldfill.insert private date createtime 更新日期 tablefield fill fieldfill.insert update private date updatetime 3.0版本之前的配置類 c...

Mybatis Plus學習筆記(五) 刪除

本系列部落格其他文章下方鏈結檢視 mybatis plus學習筆記 目錄 很簡單,一句就可以了,返回影響的行數。相當於 debug preparing delete from user where id debug parameters 1088250446457389058 long 和查詢相似的...

Mybatis Plus學習筆記(四) 更新

本系列部落格其他文章下方鏈結檢視 mybatis plus學習筆記 目錄 mp中的updatebyid需要傳入乙個實體 必須有id 不為null的值都會被更改,返回影響的行數。如下 user user new user user.setid 1087982257332887553l user.set...