帶你學習最簡單的分頁插件PageHelper

file 引言: PageHelper是國內很是優秀的一款開源的mybatis分頁插件,它支持基本主流與經常使用的數據庫, 例如mysql、 oracle、mariaDB、 DB二、 SQLite、Hsqldb等。今天墨白就給你們聊聊PageHelper這款分頁插件,下面是PageHelper開源地址,感興趣的小夥伴能夠去看一下 PageHelper在 github 的項目地址:java

1https://github.com/pagehelper/Mybatis-PageHelper

PageHelper在 gitosc 的項目地址:mysql

1 http://git.oschina.net/free/Mybatis_PageHelper>

先介紹一下這款插件PageHelper 官網地址:git

1https://pagehelper.github.io/

訪問官網後的頁面,官網裏面有詳細的Demo,今天咱們來照着官網本身動手敲個Demo; file 如何使用PageHelper? 1.在本身的項目添加依賴,maven項目在父工程添加最新版本,最新版本是5.1.8github

1<dependency>
2    <groupid>com.github.pagehelper</groupid>
3    <artifactid>pagehelper</artifactid>
4    <version>5.1.8</version>
5</dependency>

2.在數據訪問層Spring 配置文件中配置攔截器插件,代碼以下spring

1<bean class="org.mybatis.spring.SqlSessionFactoryBean">
 2        <property name="dataSource" ref="dataSource" />
 3        <!--配置PageHelper攔截器插件-->
 4        <property name="plugins">
 5            <array>
 6                <bean class="com.github.pagehelper.PageInterceptor">
 7                    <property name="properties">
 8                        <value>
 9                            helperDialect=mysql
10                            reasonable=true
11                        </value>
12                    </property>
13                </bean>
14            </array>
15        </property>
16    </bean>

3.PageHelper分頁插件參數介紹 這裏我只介紹兩個經常使用的,詳細的能夠去看官網API文檔 helperDialect: 分頁插件會自動檢測當前的數據庫連接,自動選擇合適的分頁方式。 你能夠配置helperDialect屬性來指定分頁插件使用哪一種方言。配置時,可使用下面的縮寫值 1oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby 特別注意:使用 SqlServer2012 數據庫時,須要手動指定爲 sqlserver2012,不然會使用 SqlServer2005 的方式進行分頁。你也能夠實現 AbstractHelperDialect,而後配置該屬性爲實現類的全限定名稱便可使用自定義的實現方法。 reasonable: 分頁合理化參數,默認值爲false。當該參數設置爲 true 時,pageNum<=0 時會查詢第一頁, pageNum>pages(超過總數時),會查詢最後一頁。默認false 時,直接根據參數進行查詢。sql

4.在代碼中使用的兩種方式:數據庫

第一種mybatis

1// 此語句後的第一個select查詢自動會被分頁
2PageHelper.startPage(1, 10); 
3// 這裏的查詢會自動分頁
4List<country> list = countryMapper.selectIf(1);

第二種oracle

1//獲取第1頁,10條內容,默認查詢總數count
 2PageHelper.startPage(1, 10);
 3List<country> list = countryMapper.selectAll();
 4//用PageInfo對結果進行包裝
 5PageInfo page = new PageInfo(list);
 6//測試PageInfo所有屬性
 7//PageInfo源碼中能夠看到包含了很是全面的分頁屬性
 8assertEquals(1, page.getPageNum());
 9assertEquals(10, page.getPageSize());
10assertEquals(1, page.getStartRow());
11assertEquals(10, page.getEndRow());
12assertEquals(183, page.getTotal());
13assertEquals(19, page.getPages());
14assertEquals(1, page.getFirstPage());
15assertEquals(8, page.getLastPage());
16assertEquals(true, page.isFirstPage());
17assertEquals(false, page.isLastPage());
18assertEquals(false, page.isHasPreviousPage());
19assertEquals(true, page.isHasNextPage());

使用PageHelper 配置好了上面的座標和Spring配置文件之後,咱們直接開始使用PageHelper,,每一個人的表數據可能都不同,你們根據需求本身來玩,代碼以下 Mapper接口app

1/**
2 * CompanyMapper接口
3*/
4public interface CompanyMapper {
5   //查詢所有
6   List<company> findAll();
7}

Mapper映射

1 <!--查詢所有-->
2    <select id="findAll" resultmap="BaseResultMap">
3      select * from ss_company where companyId=#{companyId}
4</select>

Service接口

1public interface CompanyService {
2   // 分頁查詢
3   PageInfo<user> findByPage(int pageNum, int PageSize);
4   //查詢全部
5   List<company> findAll();
6}

impl實現

1 // 注入Mapper
 2 @Autowired
 3 private CompanyMapper companyMapper;
 4
 5[@Override](https://my.oschina.net/u/1162528)
 6public PageInfo<company> findByPage(int pageNum, int pageSize) {
 7    // 開始分頁, PageHelper組件會自動對其後的第一條查詢查詢分頁
 8    PageHelper.startPage(pageNum,pageSize);
 9    // 調用dao查詢
10    List<company> list = companyMapper.findAll();
11    // 建立PageInfo對象封裝分頁結果,傳入查詢集合。會自動計算分頁參數
12    PageInfo<company> pageInfo = new PageInfo&lt;&gt;(list);
13    return pageInfo;
14}

單元測試

1@RunWith(SpringJUnit4ClassRunner.class)
 2@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
 3public class UserServiceImplTest {
 4    // 注入service
 5    @Autowired
 6    private CompanyService companyMapper;
 7
 8    @Test
 9    public void findByPage(){
10        PageInfo<user> pageInfo = companyMapper.findByPage(1, 2);
11        System.out.println(pageInfo);
12    }
13}

測試結果: file 控制器:每一個人的Controller都不同,我這裏給個模板大家,不明白的能夠在後臺留言,或者是在羣裏提問, 僅做參考:

1   @Autowired
 2   private CompanyService companyService;
 3
 4   @RequestMapping("/***")
 5   public ModelAndView findByPage(
 6         @RequestParam(defaultValue = "1") int pageNum,
 7         @RequestParam(defaultValue = "5") int pageSize) {
 8
 9      ModelAndView mv = new ModelAndView();
10      mv.addObject("pageInfo",pageInfo);
11      mv.setViewName("詳情列表");
12      return mv;
13   }
14}

今天的內容就到這裏了,加油!!!明天見 > 本文由公衆號【框架師 ,ID:mohu121】首發,轉載請註明出處</user></company></company></company></company></user></company></country></country>

相關文章
相關標籤/搜索