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!
推薦閱讀:
- MyBatis使用Map與模糊查詢的方法示例
- 詳解MyBatis的Dao層實現和配置文件深入
- MyBatis批量插入大量數據(1w以上)
- Mybatis圖文並茂講解分頁插件
- 手把手帶你實現第一個Mybatis程序