您的位置:首页 > 编程语言 > Java开发

java实现分页工具类(JDBC)

2012-08-22 16:27 405 查看
分页的实现在日常的开发中会经常遇到,编写一个分页工具类,以后可以直接引用了,呵呵。。。

1.分页工具类,封装分页信息

package com.student.util;
import java.util.List;

import com.student.entity.Person;

/**
* 封装分页信息
* @author Administrator
*
* @param <Person>
*/
public class PageModel<E> {

//结果集
private List<E> 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<E> getList() {
return list;
}
public void setList(List<E> 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 class PageModelTest{
public static void main(String[] args){
int pageNo=1;
int pageSize=10;
findUserList(pageNo,pageSize);
}
/**
* 分页查询
* @param pageNo 第几页
* @param pageSize 每页多少条记录
* @return PageModel<E>
*/
public PageModel<Person> findUserList(int pageNo,int pageSize){
PageModel<Person> 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<Person> personList  = new ArrayList<Person>();
while(rs.next()){
Person person=new Person();
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<Person>();
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();
}
}
return pageModel;
}
/**
* 得到总记录数,私有方法,外部无法访问,本类中使用
* @param conn
* @return
*/
private int getTotalRecords(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();
}
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: