Mybatis分頁(yè)查詢的實(shí)現(xiàn)(Rowbounds和PageHelper)
我們實(shí)現(xiàn)查詢除了
@org.junit.Test
public void test02(){
SqlSession session = MybatisUtil.getSession();
UserDao mapper = session.getMapper(UserDao.class);
List<User> allUser = mapper.getAllUser();
session.close();
for (User user : allUser) {
System.out.println(user);
}
}
還有這樣的方式,Mybatis官網(wǎng)有介紹
@org.junit.Test
public void test06(){
SqlSession session = MybatisUtil.getSession();
//參數(shù)是接口的全限定類名加包名
List<User> users = session.selectList("com.dongmu.dao.UserDao.getAllUser");
for (User user : users) {
System.out.println(user);
}
session.close();
}
那么我們下面就學(xué)習(xí)一下一個(gè)

@org.junit.Test
public void test07(){
RowBounds bounds =new RowBounds(0,3);
SqlSession session = MybatisUtil.getSession();
List<User> users = session.selectList("com.dongmu.dao.UserDao.getAllUser",null,bounds);
for (User user : users) {
System.out.println(user);
}
session.close();
}

這里總結(jié)一下自己注意到的細(xì)節(jié),它的sql語(yǔ)句我們發(fā)現(xiàn)是查詢的所有的,所以它實(shí)際上是邏輯分頁(yè),也就是說(shuō)把結(jié)果全部查詢除了然后進(jìn)行按游標(biāo)分頁(yè)。
物理分頁(yè):物理分頁(yè)就是數(shù)據(jù)庫(kù)本身提供了分頁(yè)方式,如MySQL的limit,oracle的rownum ,好處是效率高,不好的地方就是不同數(shù)據(jù)庫(kù)有不同的搞法
邏輯分頁(yè):利用游標(biāo)分頁(yè),好處是所有數(shù)據(jù)庫(kù)都統(tǒng)一,壞處就是因?yàn)橄炔樵兊剿袛?shù)據(jù),所有效率低。
下面我們?cè)俳榻B一個(gè)分頁(yè)插件PageHelper
使用方式:
加入依賴:
<dependency> ? ? ? ? ? ? <groupId>com.github.pagehelper</groupId> ? ? ? ? ? ? <artifactId>pagehelper</artifactId> ? ? ? ? ? ? <version>5.1.10</version> ? ? ? ? </dependency>
在mybatis的主配置文件中,在<environments>之前加入
<plugins> ?<plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins>
在進(jìn)行失去了查詢之前使用方法:
PageHelper.startPage(pageNum,pageSize);

查詢結(jié)果

可以發(fā)現(xiàn)我們的PageHelper用到的是PreparedStatement進(jìn)行的物理分頁(yè)查詢。
到此這篇關(guān)于Mybatis分頁(yè)查詢的實(shí)現(xiàn)(Rowbounds和PageHelper)的文章就介紹到這了,更多相關(guān)Mybatis分頁(yè)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文帶你了解Java創(chuàng)建型設(shè)計(jì)模式之原型模式
原型模式其實(shí)就是從一個(gè)對(duì)象在創(chuàng)建另外一個(gè)可定制的對(duì)象,不需要知道任何創(chuàng)建的細(xì)節(jié)。本文就來(lái)通過(guò)示例為大家詳細(xì)聊聊原型模式,需要的可以參考一下2022-09-09
IntelliJ IDEA連接MySQL數(shù)據(jù)庫(kù)詳細(xì)圖解
今天小編就為大家分享一篇關(guān)于intellij idea連接mysql數(shù)據(jù)庫(kù)詳細(xì)圖解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
使用springboot跳轉(zhuǎn)到指定頁(yè)面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例)
這篇文章主要介紹了使用springboot跳轉(zhuǎn)到指定頁(yè)面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解Java編寫并運(yùn)行spark應(yīng)用程序的方法
這篇文章主要介紹了詳解Java編寫并運(yùn)行spark應(yīng)用程序的方法,內(nèi)容詳細(xì),結(jié)合了作者實(shí)際工作中的問(wèn)題進(jìn)行具體分析,具有一定參考價(jià)值。2017-09-09
Java?超詳細(xì)講解類的定義方式和對(duì)象的實(shí)例化
Java是一門純面向?qū)ο蟮恼Z(yǔ)言(Object?Oriented?Program,繼承OOP),在面對(duì)對(duì)象的世界里面,一切皆為對(duì)象。面向?qū)ο笫墙鉀Q問(wèn)題的一種思想,主要依靠對(duì)象之間的交互完成一件事情2022-03-03

