网上找的例子都很模糊,所以自己弄一个简单的分页分享给大家
效果图:只要数据多就能自动显示:首页,上一页,下一页,尾页的功能
1、分页封装
package com.gx.util;
import java.util.List;
public class PageBean<T> {
private int currPage;//当前页数
private int pageSize;//每页显示的记录数
private int totalCount;//总记录数
private int totalPage;//总页数
private List<T> lists;//每页的显示的数据
public PageBean() {
super();
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<T> getLists() {
return lists;
}
public void setLists(List<T> lists) {
this.lists = lists;
}
}
2、XXXMapper.xml:写分页条件
//分页显示页
<select id="findByPage" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from b_store limit #{start},#{size}
</select>
//分页总数
<select id="selectCount" resultType="int">
select COUNT(*) from b_store
</select>
3、dao
package com.gx.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gx.po.StorePo;
public interface StorePoMapper {
StorePo findById(int id);
public boolean insert(StorePo record);
public boolean edit(StorePo record);
long sum();
int deleteById(StorePo record);
List<StorePo> findAllUp();
//注意:这两句才是重点
List<StorePo> findByPage(HashMap<String,Object> map);
int selectCount();
}
4、service
package com.gx.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.ibatis.annotations.Param;
import org.springframework.ui.Model;
import com.gx.common.BaseService;
import com.gx.po.StorePo;
import com.gx.util.PageBean;
public interface IStoreService{
StorePo findById(int id);
public boolean insert(StorePo record);
public boolean edit(StorePo record);
long sum();
int deleteById(StorePo record);
List<StorePo> findAllUp();
int insertReturnId(StorePo store);
//同样是这两句
int selectCount();
PageBean<StorePo> findByPage(int currentPage);
}
5、service.impl
package com.gx.service.impl;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.gx.dao.StorePoMapper;
import com.gx.po.StorePo;
import com.gx.service.IStoreService;
import com.gx.util.PageBean;
@Transactional
@Service("iStoreService")
public class StoreServiceImpl implements IStoreService{
@Autowired
private StorePoMapper storePoMapper;
@Override
public StorePo findById(int id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean insert(StorePo record) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean edit(StorePo record) {
// TODO Auto-generated method stub
return false;
}
@Override
public long sum() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteById(StorePo record) {
// TODO Auto-generated method stub
return 0;
}
@Override
public List<StorePo> findAllUp() {
// TODO Auto-generated method stub
return storePoMapper.findAllUp();
}
@Override
public int insertReturnId(StorePo store) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int selectCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public PageBean<StorePo> findByPage(int currentPage) {
HashMap<String,Object> map = new HashMap<String,Object>();
PageBean<StorePo> pageBean = new PageBean<StorePo>();
//封装当前页数
pageBean.setCurrPage(currentPage);
//每页显示的数据
int pageSize=5;
pageBean.setPageSize(pageSize);
//封装总记录数
int totalCount = storePoMapper.selectCount();
pageBean.setTotalCount(totalCount);
//封装总页数
double tc = totalCount;
Double num =Math.ceil(tc/pageSize);//向上取整
pageBean.setTotalPage(num.intValue());
map.put("start",(currentPage-1)*pageSize);
map.put("size", pageBean.getPageSize());
//封装每页显示的数据
List<StorePo> lists = storePoMapper.findByPage(map);
pageBean.setLists(lists);
return pageBean;
}
}
6、web(Controller)
@Controller
@RequestMapping(value="/store")
public class StoreController {
@Autowired
private IStoreService iStoreService;
private IProjectService iProjectService;
private IProjectTypeService iProjectTypeService;
private IClerkService iClerkService;
//绑定分页
@RequestMapping("storeManagement")
public String storeManagement(@RequestParam(value="currentPage",defaultValue="1",required=false)int currentPage,Model model){
try {
model.addAttribute("pagemsg", iStoreService.findByPage(currentPage));//回显分页数据
System.out.println(currentPage);
return "/store/storeManagement";
} catch (Exception e) {
e.printStackTrace();
return "/user/result";
}
}
7、jsp 表格的都差不多,所以就不写了,直接给出分页栏
<table border="0" cellspacing="0" cellpadding="0" width="900px">
<tr>
<td class="td2">
<span>第${requestScope.pagemsg.currPage }/ ${requestScope.pagemsg.totalPage}页</span>
<span>总记录数:${requestScope.pagemsg.totalCount } 每页显示:${requestScope.pagemsg.pageSize}</span>
<span>
<c:if test="${requestScope.pagemsg.currPage != 1}">
<a href="${pageContext.request.contextPath }/store/storeManagement.do?currentPage=1">[首页]</a>
<a href="${pageContext.request.contextPath }/store/storeManagement.do?currentPage=${requestScope.pagemsg.currPage-1}">[上一页]</a>
</c:if>
<c:if test="${requestScope.pagemsg.currPage != requestScope.pagemsg.totalPage}">
<a href="${pageContext.request.contextPath }/store/storeManagement.do?currentPage=${requestScope.pagemsg.currPage+1}">[下一页]</a>
<a href="${pageContext.request.contextPath }/store/storeManagement.do?currentPage=${requestScope.pagemsg.totalPage}">[尾页]</a>
</c:if>
</span>
</td>
</tr>
</table>
希望能帮到你们