This commit is contained in:
Looly
2023-03-15 03:07:19 +08:00
parent b2235e4520
commit 48fdda9faf
16 changed files with 520 additions and 462 deletions

View File

@@ -1,8 +1,8 @@
package cn.hutool.db;
import cn.hutool.core.lang.Segment;
import cn.hutool.core.math.PageInfo;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.db.sql.Order;
import java.io.Serializable;
@@ -16,6 +16,9 @@ import java.util.Arrays;
public class Page implements Segment<Integer>, Serializable {
private static final long serialVersionUID = 97792549823353462L;
/**
* 默认
*/
public static final int DEFAULT_PAGE_SIZE = 20;
/**
@@ -140,15 +143,16 @@ public class Page implements Segment<Integer>, Serializable {
/**
* @return 开始位置
* @see #getStartIndex()
* @see #getBeginIndex()
*/
public int getStartPosition() {
return getStartIndex();
return getBeginIndex();
}
@Override
public Integer getStartIndex() {
return PageUtil.getStart(this.pageNumber, this.pageSize);
public Integer getBeginIndex() {
return PageInfo.of(Integer.MAX_VALUE, this.pageSize)
.setFirstPageNo(0).setPageNo(this.pageNumber).getBeginIndex();
}
/**
@@ -161,7 +165,7 @@ public class Page implements Segment<Integer>, Serializable {
@Override
public Integer getEndIndex() {
return PageUtil.getEnd(this.pageNumber, this.pageSize);
return PageInfo.of(Integer.MAX_VALUE, this.pageSize).setFirstPageNo(0).getEndIndex();
}
/**
@@ -178,7 +182,9 @@ public class Page implements Segment<Integer>, Serializable {
* @return 第一个数为开始位置,第二个数为结束位置
*/
public int[] getStartEnd() {
return PageUtil.transToStartEnd(pageNumber, pageSize);
final PageInfo pageInfo = PageInfo.of(Integer.MAX_VALUE, this.pageSize)
.setFirstPageNo(0).setPageNo(this.pageNumber);
return new int[]{pageInfo.getBeginIndex(), pageInfo.getEndIndexExclude()};
}
@Override

View File

@@ -1,6 +1,6 @@
package cn.hutool.db;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.math.PageInfo;
import java.util.ArrayList;
@@ -16,7 +16,7 @@ public class PageResult<T> extends ArrayList<T> {
public static final int DEFAULT_PAGE_SIZE = Page.DEFAULT_PAGE_SIZE;
/**
* 页码{@link PageUtil#getFirstPageNo()}表示第一页
* 页码
*/
private int page;
/**
@@ -65,7 +65,7 @@ public class PageResult<T> extends ArrayList<T> {
this(page, pageSize);
this.total = total;
this.totalPage = PageUtil.totalPage(total, pageSize);
this.totalPage = PageInfo.of(total, pageSize).getPages();
}
//---------------------------------------------------------- Constructor end
@@ -142,7 +142,7 @@ public class PageResult<T> extends ArrayList<T> {
* @return 是否第一页
*/
public boolean isFirst() {
return this.page == PageUtil.getFirstPageNo();
return this.page == 0;
}
/**

View File

@@ -34,7 +34,8 @@ public class DbTest {
@Test
public void pageTest() {
// 测试数据库中一共4条数据第0页有3条第1页有1条
final List<Entity> page0 = Db.of().page(Entity.of("user"), Page.of(0, 3));
final List<Entity> page0 = Db.of().page(Entity.of("user"),
Page.of(0, 3));
Assert.assertEquals(3, page0.size());
final List<Entity> page1 = Db.of().page(Entity.of("user"), Page.of(1, 3));