Skip to content

Commit

Permalink
Merge pull request #797 from yesAnd92/master
Browse files Browse the repository at this point in the history
PageInfo重载一个of方法,支持手动指定count返回分页信息
  • Loading branch information
abel533 committed Jan 8, 2024
2 parents 6440439 + 47a47d5 commit 4a2ce68
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/main/java/com/github/pagehelper/PageInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,21 @@ public static <T> PageInfo<T> of(List<? extends T> list) {
return new PageInfo<T>(list);
}


/**
* 手动指定总记录数获取分页信息
*
* @param total 总记录数
* @param list page结果
*/
public static <T> PageInfo<T> of(long total, List<? extends T> list) {
if (list instanceof Page) {
Page page = (Page) list;
page.setTotal(total);
}
return new PageInfo<T>(list);
}

public static <T> PageInfo<T> of(List<? extends T> list, int navigatePages) {
return new PageInfo<T>(list, navigatePages);
}
Expand Down
93 changes: 93 additions & 0 deletions src/test/java/com/github/pagehelper/test/basic/PageInfoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,97 @@ public void testNavigatePages() {
sqlSession.close();
}
}


/**
* 手动指定记录总数,返回分页信息
*/
@Test
public void testPageInfoOfTotal() {
SqlSession sqlSession = MybatisHelper.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
try {
//获取第1页,10条内容,关闭查询总数
PageHelper.startPage(1, 10, false);
List<User> list = userMapper.selectAll();
System.out.println(list);

//手动指定总数
PageInfo<User> page = PageInfo.of(183L, list);

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(true, page.isIsFirstPage());
assertEquals(false, page.isIsLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());

PageSerializable<User> serializable = PageSerializable.of(list);
assertEquals(183, serializable.getTotal());


//获取第2页,10条内容,关闭查询总数
PageHelper.startPage(2, 10, false);
list = userMapper.selectAll();

//手动指定总数
page = PageInfo.of(183L, list);

assertEquals(2, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(11, page.getStartRow());
assertEquals(20, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(false, page.isIsFirstPage());
assertEquals(false, page.isIsLastPage());
assertEquals(true, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());


//获取第19页,10条内容,关闭查询总数
PageHelper.startPage(19, 10, false);
list = userMapper.selectAll();

//手动指定总数
page = PageInfo.of(183L, list);

assertEquals(19, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(181, page.getStartRow());
assertEquals(183, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(false, page.isIsFirstPage());
assertEquals(true, page.isIsLastPage());
assertEquals(true, page.isHasPreviousPage());
assertEquals(false, page.isHasNextPage());


//不使用PageHelper.startPage
list = userMapper.selectAll();

//手动指定总数
page = PageInfo.of(183L, list);

assertEquals(1, page.getPageNum());
assertEquals(183, page.getPageSize());
assertEquals(0, page.getStartRow());
assertEquals(182, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(1, page.getPages());
assertEquals(true, page.isIsFirstPage());
assertEquals(true, page.isIsLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(false, page.isHasNextPage());


} finally {
sqlSession.close();
}
}
}

0 comments on commit 4a2ce68

Please sign in to comment.