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の使用例と組み合わせて、次のようにします.
文書の一部を搬送するコード:
ページングを行う必要があるMyBatisクエリー・メソッドの前に
例1:
パラメータ方式を使用するには、
この方法に加えて、Userオブジェクトに2つのパラメータ値が含まれている場合は、次の方法もあります.
注意:
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);
この方法が呼び出されると、pageNumKey
とpageSizeKey
のパラメータが同時に発見されるため、この方法はページングされる.paramsが提供するいくつかのパラメータはこのように使用できます.この方法に加えて、Userオブジェクトに2つのパラメータ値が含まれている場合は、次の方法もあります.
List selectByPageNumSize(User user);
この方法はUserからpageNumKey
とpageSizeKey
のパラメータが同時に発見されるとページングされる.注意:
pageNum
とpageSize
の2つのプロパティが同時に存在する場合、ページング操作がトリガーされます.これを前提として、他のページングパラメータが有効になります.