关于java实现分页
1.分页工具类,封装分页信息
package com.student.util;
import java.util.List;
import com.student.entity.Person;
/**
* 封装分页信息
* @author Administrator
*
* @param
*/
public class PageModel {
//结果集
private List list;
//查询记录数
private int totalRecords;
//第几页
private int pageNo;
//每页多少条记录
private int pageSize;
//总页数
public int getTotalPages(){
return (totalRecords + pageSize -1)/pageSize;
}
//首页
public int getTopPage(){
return 1;
}
//上一页
public int getPreviousPage(){
if(pageNo<=1){
return 1;
}
return pageNo-1;
}
//下一页
public int getNextPage(){
if(pageNo>=getBottomPage()){
return getBottomPage();
}
return pageNo+1;
}
//尾页
public int getBottomPage(){
return getTotalPages();
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
2.测试类
public classPageModelTest{public static voidmain(String[] args){int pageNo=1;int pageSize=10;
findUserList(pageNo,pageSize);
}/*** 分页查询
*@parampageNo 第几页
*@parampageSize 每页多少条记录
*@returnPageModel*/
public PageModel findUserList(int pageNo,intpageSize){
PageModel pageModel = null;
Connection conn= null;
PreparedStatement ps= null;
ResultSet rs= null;//各数据库的分页语句不一样
/*oracle实现分页,三层嵌套,这里10应该为pageNo*pageSize ,0为(pageNo-1)*pageSize
String sql="
select column1,column2,column3,column4,column5 from
(select rownum rn,column1,column2,column3,column4,column5 from
(select column1,column2,column3,column4,column5 from table_name order by column desc)
where rownum<=10)
where rn>0";*/
//mysql实现分页
String sql="select * from person order by id desc limit ?,? ";
conn=DBUtil.getUtil().getConnection();try{
ps=conn.prepareStatement(sql);
ps.setInt(1, (pageNo-1) *pageSize);
ps.setInt(2, pageSize);
rs=ps.executeQuery();
List personList = new ArrayList();while(rs.next()){
Person person=newPerson();
person.setName(rs.getString("stu_name"));
person.setPassword(rs.getString("stu_psw"));
person.setNumber(rs.getString("stu_number"));
person.setBirthday(rs.getDate("stu_birth"));
person.setSex(rs.getInt("stu_sex"));
person.setPolity(rs.getInt("stu_polity"));
person.setBrief(rs.getString("stu_brief"));
person.setType(rs.getInt("type"));
person.setState(rs.getInt("state"));
personList.add(person);
}
pageModel= new PageModel();
pageModel.setList(personList);
pageModel.setTotalRecords(getTotalRecords(conn));
pageModel.setPageSize(pageSize);
pageModel.setPageNo(pageNo);
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{try{if(rs!=null){
rs.close();
}if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}returnpageModel;
}/*** 得到总记录数,私有方法,外部无法访问,本类中使用
*@paramconn
*@return
*/
private intgetTotalRecords(Connection conn){
PreparedStatement ps= null;
ResultSet rs= null;
String sql="select count(*) from person";
conn=DBUtil.getUtil().getConnection();int count=0;try{
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();while(rs.next()){//此时根据sql语句查出的只有一列,否则不建议用int标识字段
count = rs.getInt(1);
}
}catch(SQLException e) {
e.printStackTrace();
}finally{try{if(rs!=null){
rs.close();
}if(ps!=null){
ps.close();
}
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}returncount;
}
}