之前学习过,但忘记了,重温了一遍,记录一下思想。
首先,分页需要几个参数,第一,当前页面;第二,每页设置的数据量;
先将这个参数封装成一个类
public class QueryFenye { //每页多少条 private Integer size; //从第多少条数据开始,因为页数不等于开始查询的位置,第一页对应的是第0条开始,所以多用一个属性 private Integer start; //当前页面 private Integer page; public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } public Integer getStart() { return start; } public void setStart(Integer start) { this.start = start; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } }
页面参数有了,现在我们需要一个分页类,用来保存查询的结果
public class Page<T> { // 数据库总条数,用与和每一页大小相除得到总页数 private Integer total; // 每一页的大小 private Integer size; //当前页 private Integer page; // list里面存的是pojo的实体类 private List<T> rows;
//用来存总页数
private Integer pagenumber;
public Integer getPagenumber() {
return pagenumber;
}
public void setPagenumber(Integer pagenumber) {
this.pagenumber = pagenumber;
}
public Integer getTotal() { return total; } public void setTotal(Integer total) { this.total = total; } public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public List<T> getRows() { return rows; } public void setRows(List<T> rows) { this.rows = rows; } }
之后是在DAO实现类里设置查询方// 此方法是为了返回总条数
public Integer getSize() { // TODO Auto-generated method stub int size=internalcontrolMapper.getsize(); return size; } // 用于分页查询 public Page<Internalcontrol> Fenye(QueryFenye queryFenye) { Page<Internalcontrol> page=new Page<Internalcontrol>(); //手动设置了每一页的大小
page.setSize(10); queryFenye.setSize(10); if(queryFenye.getPage()!=null){
//开始的位置是当前页面减一 queryFenye.setStart(queryFenye.getPage()-1); page.setPage(queryFenye.getPage()); page.setTotal(internalcontrolMapper.getsize());
if(page.getTotal%10!=0){
page.setPagenumber(page.getTotal/10+1)
}
else{
page.setPagenumber(page.getTotal/10)
}
page.setRows(internalcontrolMapper.Fenye(queryFenye)); } return list; }
简单实用案例,所以sql语句就简单写了
<select id="getsize" resultType="Integer"> select count(*) from InternalControl </select> <select id="Fenye" parameterType ="pojo.QueryFenye" resultType="pojo.Internalcontrol"> select * from InternalControl limit #{start},#{size} </select>
之后将page返回给前端就好,最好弄个session或者参数保存当前页信息,因为不仅能直接点击1,2,3,4,5页跳转,还能够点击上一页下一页,这需要在现有页的基础上执行。