下面列出了怎么用com.github.pagehelper.PageRowBounds的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void testSelectRowBoundsByDynamicQuery() {
DynamicQuery<User> dynamicQuery = new DynamicQuery<>(User.class);
dynamicQuery.setDistinct(true);
FilterDescriptor idFilter =
new FilterDescriptor("id", FilterOperator.LESS_THAN, 100);
dynamicQuery.addFilters(idFilter);
SortDescriptor idSort =
new SortDescriptor(User::getId, SortDirection.DESC);
dynamicQuery.addSorts(idSort);
PageRowBounds pageRowBounds = new PageRowBounds(1, 2);
List<User> users = userDao.selectRowBoundsByDynamicQuery(dynamicQuery, pageRowBounds);
assertEquals(true, users.size() > 0);
}
/**
* 数据表grid查询 It's not good enough
* @param pageIndex
* @param pageSize
* @param paramsMap 给criteria添加参数使用
* @return
*/
private Map<String, Object> getGrids(int pageIndex, int pageSize, HashMap<String, String> paramsMap) {
PageRowBounds rowBounds = new PageRowBounds(pageIndex+1, pageSize);
SqlSession sqlSession = MybatisHelper.getSqlSession();
Mapper mapper = (Mapper) sqlSession.getMapper(UUserMapper.class);
Example example = new Example(UUser.class);
Example.Criteria criteria = example.createCriteria();
/*criteria增加条件...*/
List<UUser> users = (List<UUser>) mapper.selectByExampleAndRowBounds(example, rowBounds);
/*4.构造适合miniui_grid展示的map*/
Map<String, Object> map_grid = new HashedMap();
map_grid.put("total", users.size());
map_grid.put("data", users);
return map_grid;
}
/**
* 使用Mapper接口调用时,使用PageHelper.startPage效果更好,不需要添加Mapper接口参数
*/
@Test
public void testWithRowboundsAndCountTrue() {
SqlSession sqlSession = RowBoundsHelper.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
try {
//limit=0,这时候相当于用分页插件求count,但是前提必须是配置rounbounds方式求count,否则都是-1
//这里由于没有配置,应该都是-1
PageRowBounds pageRowBounds = new PageRowBounds(0, -1);
List<User> list = userMapper.selectAll(pageRowBounds);
assertEquals(183, list.size());
//pageSize<0的时候同上
list = userMapper.selectAll(new PageRowBounds(0, -100));
assertEquals(183, list.size());
} finally {
sqlSession.close();
}
}
@Override
public Map<String, Object> queryGridKey(int pageNum, int pageSize,
String field, String sort,
HashMap<String, String> params)
throws ClassNotFoundException, IllegalAccessException,
InstantiationException, NoSuchMethodException, InvocationTargetException {
String[] strs = params.get("key").split("_"); /*1.strs[0]:接口, strs[1]:方法*/
SqlSession sqlSession = MybatisHelper.getSqlSession(); /*2.sqlSession*/
PageRowBounds rowBounds = new PageRowBounds(pageNum, pageSize); /*3.rowBounds*/
/*
0 = {[email protected]} "rolename" -> "0001"
1 = {[email protected]} "key" -> "UUserMapper_gridUsers"
2 = {[email protected]} "username" -> "0001"
* */
/*1.Mapper*/
Class mapper_clz = Class.forName(MAPPER + strs[0]);
Mapper mapper = (Mapper) sqlSession.getMapper(mapper_clz);
/*2.Page分页操作*/
// List<Object> list = pagePojo(params, strs, mapper, pageNum, pageSize); // pojo
List<Object> list = pageMap(params, strs, mapper, pageNum, pageSize); // map
PageInfo page = new PageInfo(list);
/*4.构造适合miniui_grid展示的map*/
Map<String, Object> map_grid = new HashedMap();
map_grid.put("total", page.getTotal());
map_grid.put("data", list);
return map_grid;
}
@Override
public boolean beforeCount(MappedStatement ms, Object parameterObject, RowBounds rowBounds) {
if(rowBounds instanceof PageRowBounds){
PageRowBounds pageRowBounds = (PageRowBounds)rowBounds;
return pageRowBounds.getCount() == null || pageRowBounds.getCount();
}
return false;
}
@Override
public boolean afterCount(long count, Object parameterObject, RowBounds rowBounds) {
Page page = getLocalPage();
page.setTotal(count);
if (rowBounds instanceof PageRowBounds) {
((PageRowBounds) rowBounds).setTotal(count);
}
//pageSize < 0 的时候,不执行分页查询
//pageSize = 0 的时候,还需要执行后续查询,但是不会分页
if (page.getPageSize() < 0) {
return false;
}
return count > ((page.getPageNum() - 1) * page.getPageSize());
}
@Override
public boolean afterCount(long count, Object parameterObject, RowBounds rowBounds) {
//由于 beforeCount 校验,这里一定是 PageRowBounds
((PageRowBounds) rowBounds).setTotal(count);
return count > 0;
}