@Test
public void test04() {
System.out.println(getSubListLimitEnd(6, 2, 10));
}
/**
* 获取子列表的页码
* @param masterListSize 主列表所有数据的条数
* @param page 当前页码
* @param size 当前size
* @return 子列表当前页码
*/
public int getSubListPage(int masterListSize, int page, int size) {
int subPage = 1;
// 计算相差数量
int count = page * size - masterListSize;
if(0 >= count) {
return 0;
}
subPage = (count / size) + (count % size != 0 ? 1 : 0);
return subPage;
}
/**
* 获取子列表的分页截止点
* @param masterListSize 主列表所有数据的条数
* @param page 当前页码
* @param size 当前size
* @return 子列表分页截止点
*/
public int getSubListLimitEnd(int masterListSize, int page, int size) {
int subSize = size;
// 计算相差数量
int count = page * size - masterListSize;
if (count % size != 0) {
subSize = (count % size);
int subPage = getSubListPage(masterListSize, page, size);
if (subPage > 1) {
subSize += ((getSubListPage(masterListSize, page, size) - 1)
* size);
}
if(subSize > size) {
subSize = size;
}
System.out.println("subPage:" + subPage);
System.out.println("subSizeBegin:" + getSubListLimitBegin(masterListSize, page, size));
System.out.println("subSizeEnd:" + subSize);
}
return subSize;
}
/**
* 获取子列表分页起始点
* @param masterListSize 主列表所有数据的条数
* @param page 当前页码
* @param size 当前size
* @return 子列表分页起始点
*/
public int getSubListLimitBegin(int masterListSize, int page, int size) {
int subSize = size;
// 计算相差数量
int count = page * size - masterListSize;
if (count % size != 0) {
subSize = (count % size);
int subPage = getSubListPage(masterListSize, page, size);
if (subPage > 1) {
subSize += ((getSubListPage(masterListSize, page, size) - 1)
* size);
subSize -= (subPage - 1) * size;
}
if(subPage == 1) {
subSize = 0;
}
}
return subSize;
}
这种一般用于在,有一个列表,他本来有返回数据,当他返回数据不足够你所设置的size时,计算出另一个子列表的查询SQL LIMIT 的两个值,补全第一个列表。 |