MybatisのプラグインPageHelperページングクエリーの使用方法

9925 ワード

参照先:https://blog.csdn.net/ckc_666/article/details/79257028
Mybatisのプラグイン、PageHelper、非常に便利mybatisページ検索、国内の牛人のオープンソースプロジェクト
github:https://github.com/pagehelper/Mybatis-PageHelper
文書の使用:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
EXampleの使用例と組み合わせて、次のようにします.
@Service
public class BrandService {

    @Autowired
    private BrandMapper brandMapper;

    /**
     *                  
     * @param key
     * @param page
     * @param rows
     * @param sortBy
     * @param desc
     * @return
     */
    public PageResult queryBrandsByPage(String key, Integer page, Integer rows, String sortBy, Boolean desc) {

        //    example  
        Example example = new Example(Brand.class);
        Example.Criteria criteria = example.createCriteria();

        //   name    ,         
        if (StringUtils.isNotBlank(key)) {
            criteria.andLike("name","%" + key + "%").orEqualTo("letter",key);
        }

        //       
        PageHelper.startPage(page,rows);

        //       
        if (StringUtils.isNotBlank(sortBy)) {
            //     desc true  false,        
            example.setOrderByClause(sortBy + " " + (desc ? "desc" : "asc"));   //    “id desc”
        }

        //           Brand   list 
        List brands = this.brandMapper.selectByExample(example);

        //    pageInfo
        PageInfo pageInfo = new PageInfo<>(brands);

        //            
        return new PageResult<>(pageInfo.getTotal(),pageInfo.getList());

    }
}
 
文書の一部を搬送するコード:PageHelper.startPage静的メソッド呼び出しPageHelper.startPageの方法に加えて、同様の方法のPageHelper.offsetPageも提供される.
ページングを行う必要があるMyBatisクエリー・メソッドの前にPageHelper.startPage静的メソッドを呼び出すと、このメソッドの後に続く最初のMyBatisクエリー・メソッドがページングされます.
例1:
//   1 ,10   ,      count
PageHelper.startPage(1, 10);
//       select      
List list = countryMapper.selectIf(1);
assertEquals(2, list.get(0).getId());
assertEquals(10, list.size());
//   ,       list   Page,         ,       Page
assertEquals(182, ((Page) list).getTotal());
例2:
//request: url?pageNum=1&pageSize=10
//   ServletRequest,Map,POJO   ,     params   
PageHelper.startPage(request);
//       select      
List list = countryMapper.selectIf(1);

//        ,      PageHelper.startPage
List list2 = countryMapper.selectIf(null);
//list1
assertEquals(2, list.get(0).getId());
assertEquals(10, list.size());
//   ,       list   Page,         ,       Page//    PageInfo (        )
assertEquals(182, ((Page) list).getTotal());
//list2
assertEquals(1, list2.get(0).getId());
assertEquals(182, list2.size());
例3、PageInfoの用法を使用する:
//   1 ,10   ,      count
PageHelper.startPage(1, 10);
List 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());
パラメータの使用方法:
パラメータ方式を使用するには、supportMethodsArgumentsパラメータをtrueとし、paramsパラメータを構成する必要があります.たとえば、次の構成があります.

    
    
        
        
        
    
MyBatisメソッドでは、次のようになります.
List selectByPageNumSize(
        @Param("user") User user,
        @Param("pageNumKey") int pageNum, 
        @Param("pageSizeKey") int pageSize);
この方法が呼び出されると、pageNumKeypageSizeKeyのパラメータが同時に発見されるため、この方法はページングされる.paramsが提供するいくつかのパラメータはこのように使用できます.
この方法に加えて、Userオブジェクトに2つのパラメータ値が含まれている場合は、次の方法もあります.
List selectByPageNumSize(User user);
この方法はUserからpageNumKeypageSizeKeyのパラメータが同時に発見されるとページングされる.
注意:pageNumpageSizeの2つのプロパティが同時に存在する場合、ページング操作がトリガーされます.これを前提として、他のページングパラメータが有効になります.