一、思路
- 返回Map 包含返回的数据 、 分页的HTML代码
- 真分页使用SQL语句的LIMIT 来规定取数据的范围
- 传入 当前页码 和 页面数据大小(如10条分一次页)
- 取数据的开始值为 (当前页面-1)*页面大小
service
public Map<String, Object> getPageList(int currentPage, int pageSize) {
Map<String,Object> map = new HashMap<>();
int page = (currentPage-1)*pageSize;
List<Product> pdList = productMapper.findPageList( page, pageSize);
map.put("list",pdList);
StringBuffer html = new StringBuffer();
int listCount = productMapper.pdCount();
int pageCount = listCount/pageSize;
if(listCount%pageSize != 0){
pageCount += 1;
}
html.append("<li class=\"disabled\"><span>"+currentPage+" / "+pageCount+"</span></li>");
if(currentPage > 1){
html.append("<li><a href=\"?page=1\">«</a></li>");
html.append("<li><a href=\"?page="+(currentPage-1)+"\">‹</a></li>");
}
if(pageCount <= 10){
for(int i = 1;i <= pageCount;i++){
if(i == currentPage){
html.append("<li class=\"active\"><span>"+i+"</span></li>");
}else{
html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
}
}
}else{
if(currentPage >= 10){
if(currentPage+5 <= pageCount){
for(int i = currentPage-4;i <= currentPage+5;i++){
if(i == currentPage){
html.append("<li class=\"active\"><span>"+i+"</span></li>");
}else{
html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
}
}
}else{
for(int i = currentPage-4;i <= pageCount;i++){
if(i == currentPage){
html.append("<li class=\"active\"><span>"+i+"</span></li>");
}else{
html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
}
}
}
}else{
for(int i = 1;i <= 10;i++){
if(i == currentPage){
html.append("<li class=\"active\"><span>"+i+"</span></li>");
}else{
html.append("<li><a href=\"?page="+i+"\">"+i+"</a></li>");
}
}
}
}
if(currentPage < pageCount){
html.append("<li><a href=\"?page="+(currentPage+1)+"\">›</a></li>");
html.append("<li><a href=\"?page="+pageCount+"\" >»</a></li>");
}
map.put("page",html.toString());
return map;
}
Mybatis SQL (productMapper.findPageList())
select *
from s_product
ORDER BY pd_id DESC
LIMIT