首页 > 技术文章 > SSM分页思想记录

dddchongya 2021-01-15 11:41 原文

之前学习过,但忘记了,重温了一遍,记录一下思想。

首先,分页需要几个参数,第一,当前页面;第二,每页设置的数据量;

先将这个参数封装成一个类

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页跳转,还能够点击上一页下一页,这需要在现有页的基础上执行。

 

推荐阅读