Mybatis分頁查詢的實現(Rowbounds和PageHelper)

我們實現查詢除瞭

@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官網有介紹

@org.junit.Test
    public void test06(){
        SqlSession session = MybatisUtil.getSession();
        //參數是接口的全限定類名加包名
        List<User> users = session.selectList("com.dongmu.dao.UserDao.getAllUser");

        for (User user : users) {
            System.out.println(user);
        }

        session.close();
    }

那麼我們下面就學習一下一個

在這裡插入圖片描述

@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();
    }

在這裡插入圖片描述

這裡總結一下自己註意到的細節,它的sql語句我們發現是查詢的所有的,所以它實際上是邏輯分頁,也就是說把結果全部查詢除瞭然後進行按遊標分頁。

物理分頁:物理分頁就是數據庫本身提供瞭分頁方式,如MySQL的limit,oracle的rownum ,好處是效率高,不好的地方就是不同數據庫有不同的搞法

邏輯分頁:利用遊標分頁,好處是所有數據庫都統一,壞處就是因為先查詢到所有數據,所有效率低。

下面我們再介紹一個分頁插件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>

在進行失去瞭查詢之前使用方法:

PageHelper.startPage(pageNum,pageSize);

在這裡插入圖片描述

查詢結果

在這裡插入圖片描述

可以發現我們的PageHelper用到的是PreparedStatement進行的物理分頁查詢。

到此這篇關於Mybatis分頁查詢的實現(Rowbounds和PageHelper)的文章就介紹到這瞭,更多相關Mybatis分頁查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: