版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011955252/article/details/83037255
基本的步骤就是
(1)查询总共有多少条
(2)分页查询,当前页,一页查多少,一共多少页
(3)外围需要循环调用,获取所有页的数据,或者分页展示
首先写一个分页的基础类
public class Pagination<T> {
/**
* 总条数
*/
private int totalCount;
/**
* 页面
*/
private int pageNo;
/**
* 每页条数
*/
private int pageSize;
/**
* 总页数
*/
private int totalPage;
/**
* 列表
*/
private List<T> list;
/**
* 默认每页条数
*/
private final static int DEFAULT_PAGESIZE = 20;
/**
*
*/
public Pagination() {
}
/**
* 分页
*
* @param pageNo
* @param pageSize
* @param totalCount
*/
public Pagination(int pageNo, int pageSize, int totalCount) {
if (pageNo <= 0) {
this.pageNo = 1;
} else {
this.pageNo = pageNo;
}
if (pageSize <= 0) {
this.pageSize = DEFAULT_PAGESIZE;
} else {
this.pageSize = pageSize;
}
if (totalCount < 0) {
this.totalCount = 0;
} else {
this.totalCount = totalCount;
}
totalPage = (this.totalCount % this.pageSize == 0) ?
this.totalCount / this.pageSize :
this.totalCount / this.pageSize + 1;
}
/**
* 分页
*
* @param pageNo
* @param pageSize
* @param totalCount
* @param list
*/
public Pagination(int pageNo, int pageSize, int totalCount, List<T> list) {
this(pageNo, pageSize, totalCount);
this.list = list;
}
/**
* get totalCount
*
* @return
*/
public int getTotalCount() {
return totalCount;
}
/**
* set totalCount
*
* @param totalCount
*/
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
/**
* get pageNo
*
* @return
*/
public int getPageNo() {
return pageNo;
}
/**
* set pageNo
*
* @param pageNo
*/
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
/**
* get pageSize
*
* @return
*/
public int getPageSize() {
return pageSize;
}
/**
* set pageSize
*
* @param pageSize
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* get totalPage
*
* @return
*/
public int getTotalPage() {
return totalPage;
}
/**
* set totalPage
*
* @param totalPage
*/
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
/**
* get list
*
* @return
*/
public List<T> getList() {
return list;
}
/**
* set list
*
* @param list
*/
public void setList(List<T> list) {
this.list = list;
}
/**
* 获取前一页
*
* @return
*/
public int getPrevPage() {
int prevPage = 0;
if (pageNo <= 1) {
prevPage = 1;
} else {
prevPage = pageNo - 1;
}
return prevPage;
}
/**
* 获取下一页
*
* @return
*/
public int getNextPage() {
int nextPage = 0;
if (pageNo < totalPage) {
nextPage = pageNo + 1;
} else {
nextPage = totalPage;
}
return nextPage;
}
/**
* 判断是否有下一页
*
* @return
*/
public boolean hasNextPage() {
return pageNo < totalPage;
}
/**
* 列表是否为空
*
* @return
*/
public boolean isEmptyForList() {
return list == null || list.isEmpty();
}
针对接口的入参数
public class Request {
/**
* 分页大小,默认值20
*/
private int pageSize = 20;
/**
* 分页起始,默认值 1
*/
private int pageNo = 1;
}
//查询总数
<operation name="queryTableInfoCount" multiplicity="one">
<extraparams>
<param name="shopId" javatype="java.lang.String"/>
</extraparams>
<sql>
<![CDATA[
select count(*) from desk
]]>
</sql>
<sqlmap>
<![CDATA[
select count(*) from desk
where shop_id = #shopId#
]]>
</sqlmap>
</operation>
//分页查询
<operation name="queryTableInfoListByPage" multiplicity="many">
<extraparams>
<param name="shopId" javatype="java.lang.String"/>
<param name="startRow" javatype="java.lang.Integer"/>
<param name="endRow" javatype="java.lang.Integer"/>
</extraparams>
<sql>
select id,
table_name,
from desk
</sql>
<sqlmap>
<![CDATA[
select id,
table_name
from kbdesk_info
where shop_id=#shopId#
limit #startRow#,#endRow#
]]>
</sqlmap>
</operation>
分页查询
public Pagination<Table> queryTableListByShopId(
String shopId,int pageNo,int pageSize) {
int startRow = (pageNo - 1) * pageSize;
int count = (int)queryTableInfoCountByShopId(shopId);
List<Table> tableInfoList = new ArrayList<>();
if (count > 0) {
List<TableInfo> tableInfoModelList =queryTableInfoListByPage(shopId, startRow, pageSize);
if (!CollectionUtils.isEmpty(tableInfoModelList)) {
tableInfoList = tableInfoModelList.stream().map((s) -> {
return convert(s);
}).collect(Collectors.toList());
}
}
Pagination<Table> answerPagination = new Pagination<>(pageNo, pageSize,
count, tableInfoList);
return answerPagination;
}