Mybatis分頁外掛程式的執行個體詳解,mybatis分頁執行個體
Mybatis分頁外掛程式的執行個體詳解
1.前言:
我們知道,在MySQL中,分頁的sql是使用limit來做,如果我們自己寫sql,那分頁肯定是沒有任何問題的。但是一旦model多了起來,複雜了起來,我們很自然的想到使用mybatis的逆向工程來產生相應的po和mapper,但是同時也會帶來弊端,比如這裡的分頁問題就不好解決了。
可能有人會說,我可以修改產生的檔案,沒錯,這是可行的,但是一般我們通過逆向工程產生的檔案,都不會去動它,所以這個時候,就需要使用分頁外掛程式來解決了。
如果你也在用Mybatis,建議嘗試該分頁外掛程式,這個一定是最方便使用的分頁外掛程式。
該外掛程式目前支援Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種資料庫分頁。
2.使用方法
第一步:在Mybatis配置xml中配置攔截器外掛程式:
<plugins> <!-- com.github.pagehelper為PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 設定資料庫類型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種資料庫--> <property name="dialect" value="mysql"/> </plugin></plugins>
第二步:在代碼中使用
1、設定分頁資訊:
//擷取第1頁,10條內容,預設查詢總數countPageHelper.startPage(1, 10); //緊跟著的第一個select方法會被分頁List<Country> list = countryMapper.selectIf(1);
2、取分頁資訊
//分頁後,實際返回的結果list類型是Page<E>,如果想取出分頁資訊,需要強制轉換為Page<E>,Page<Country> listCountry = (Page<Country>)list;listCountry.getTotal();
3、取分頁資訊的第二種方法
//擷取第1頁,10條內容,預設查詢總數countPageHelper.startPage(1, 10);List<Country> list = countryMapper.selectAll();//用PageInfo對結果進行封裝PageInfo page = new PageInfo(list);//測試PageInfo全部屬性//PageInfo包含了非常全面的分頁屬性assertEquals(1, page.getPageNum());assertEquals(10, page.getPageSize());assertEquals(1, page.getStartRow());assertEquals(10, page.getEndRow());assertEquals(183, page.getTotal());assertEquals(19, page.getPages());assertEquals(1, page.getFirstPage());assertEquals(8, page.getLastPage());assertEquals(true, page.isFirstPage());assertEquals(false, page.isLastPage());assertEquals(false, page.isHasPreviousPage());assertEquals(true, page.isHasNextPage());
3.TestPageHelper
@Testpublic void testPageHelper() { //建立一個spring容器 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); //從spring容器中獲得Mapper的代理對象 TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class); //執行查詢,並分頁 TbItemExample example = new TbItemExample(); //分頁處理 PageHelper.startPage(2, 10); List<TbItem> list = mapper.selectByExample(example); //取商品列表 for (TbItem tbItem : list) { System.out.println(tbItem.getTitle()); } //取分頁資訊 PageInfo<TbItem> pageInfo = new PageInfo<>(list); long total = pageInfo.getTotal(); System.out.println("共有商品:"+ total);}
感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!