1. 程式人生 > >Mybatis-PageHelper分頁外掛

Mybatis-PageHelper分頁外掛

PageHelper.startPage 靜態方法呼叫 

除了 PageHelper.startPage 方法外,還提供了類似用法的 PageHelper.offsetPage 方法。

在你需要進行分頁的 MyBatis 查詢方法前呼叫 PageHelper.startPage 靜態方法即可,緊跟在這個方法後的第一個MyBatis 查詢方法會被進行分頁。

例一:

//獲取第1頁,10條內容,預設查詢總數count
PageHelper.startPage(1, 10);
//緊跟著的第一個select方法會被分頁
List<Country> list = countryMapper.selectIf(1);
assertEquals(
2, list.get(0).getId()); assertEquals(10, list.size()); //分頁時,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,需要強制轉換為Page<E> assertEquals(182, ((Page) list).getTotal());

例二:

//request: url?pageNum=1&pageSize=10
//支援 ServletRequest,Map,POJO 物件,需要配合 params 引數
PageHelper.startPage(request);
//緊跟著的第一個select方法會被分頁
List<Country> list = countryMapper.selectIf(1); //後面的不會被分頁,除非再次呼叫PageHelper.startPage List<Country> list2 = countryMapper.selectIf(null); //list1 assertEquals(2, list.get(0).getId()); assertEquals(10, list.size()); //分頁時,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,需要強制轉換為Page<E>, //或者使用PageInfo類(下面的例子有介紹)
assertEquals(182, ((Page) list).getTotal()); //list2 assertEquals(1, list2.get(0).getId()); assertEquals(182, list2.size());

例三,使用PageInfo的用法:

//獲取第1頁,10條內容,預設查詢總數count
PageHelper.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());

 

品優購專案用例

@Override
    public PageResult findPage(TbBrand brand, int pageNum, int pageSize) {
        
        PageHelper.startPage(pageNum, pageSize);//分頁    
        
        TbBrandExample example=new TbBrandExample();
        
        Criteria criteria = example.createCriteria();
        if(brand!=null){
            if(brand.getName()!=null && brand.getName().length()>0){
                criteria.andNameLike("%"+brand.getName()+"%");
            }
            if(brand.getFirstChar()!=null && brand.getFirstChar().length()>0){
                criteria.andFirstCharLike("%"+brand.getFirstChar()+"%");
            }            
        }
        
        Page<TbBrand> page = (Page<TbBrand>) brandMapper.selectByExample(example);
        
        return new PageResult(page.getTotal(), page.getResult());
    }

 

參考  Mybatis-PageHelper使用方法