1.在DAO层连接数据库是使用limit查询,传入index和pageSize参数
如我按页查询我的book信息,返回一个Book类型的List
public List<Book>getLimitBookList(int index,int pageSize){
Connection conn=JDBCUtil.getConnection();
List<Book> Books=new ArrayList<>();
ResultSet rs=null;
String sql="select * from book limit ? , ?";
PreparedStatement ps=null;
try {
ps=conn.prepareStatement(sql);
ps.setInt(1, index);
ps.setInt(2, pageSize);
rs=ps.executeQuery();
while(rs.next()) {
Books.add(new Book(rs.getInt("id"),rs.getString("name"), rs.getString("writer"),rs.getString("category")));
}
} catch (Exception e) {
// TODO: handle exception
}finally {
JDBCUtil.close(conn, ps, rs);
}
return Books;
}
并要有一个获得总记录数的方法,此处不在赘述
2.建立一个page的实体bean
其中成员如下:
private int pageNumber;
private int pageSize;
private int index;
private int totalRecord;
private List<T> data;
private String path;
pageNumber需要经过过滤,防止页面上的上一页和下一页造成首页末页溢出
public int getPageNumber() {
//如果pageNumber<1,则返回1
if(pageNumber < 1){
return 1;
}
//如果当前页大于总页数,则返回总页数
if(pageNumber > getTotalPage()){
return getTotalPage();
}
return pageNumber;
}
需要有计算总页数的方法
public int getTotalPage() {
/**
* 在这来计算总页数
*
* 总记录数 每页的条数 总页数
* 10 2 5
* 9 2 5
* 8 2 4
* 7 2 4
*
* 当可以整除时:
* totalRecord/pageSize
*
* 当有余数时:
* totalRecord/pageSize+1
*/
if(getTotalRecord()%getPageSize()==0){
return getTotalRecord()/getPageSize();