荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: guangzhougd (考北大上清华读港大回深大), 信区: Java
标 题: 高效的分页系统(上)
发信站: 荔园晨风BBS站 (Thu Nov 16 23:00:11 2006), 站内
先写一个父类.是分页的总类.
效果如:http://www.0755-100.com:888/IWantToHireATutor.jsp
/**
* <br>满分教育有限公司.
* <br>http://www.0755-100.com
* @author Hyucai
* 深圳大学
* 日期:2006-9-20
*/
package com.0755.javaBean;
import java.sql.*;
import java.util.*;
/**
* Pagination.java
* com.0755.javaBean
*/
public abstract class Pagination {
private String sql;
private int rowsPerPage;
private int rowsCount;
private int rowsPage;
/**
* <br>用于初始化变量的函数.
* @param RperPage
* @throws Exception
*/
public void config(int RperPage) throws Exception{
this.getAndSetAllRowsCount();
this.setRowsPerPage(RperPage);
if(rowsCount%rowsPerPage==0){
this.setRowsPage(rowsCount/rowsPerPage);
}else{
this.setRowsPage(rowsCount/rowsPerPage+1);
}
}
/**
* <br>读取一页的内容.
* @param PageNo
* @return Collection
* @throws Exception
*/
public Collection getPageContent(int PageNo) throws Exception{
Collection result = new ArrayList();
Connection con=new Pools().getConnection();
PreparedStatement prep=con.prepareStatement(this.sql);
ResultSet rs=prep.executeQuery();
int startRow=(PageNo-1)*this.getRowsPerPage()+1;
result=packResultSet(rs,startRow,startRow+getRowsPerPage());
if(rs!=null){
rs.close();
}
if(prep!=null){
prep.close();
}
if(con!=null){
con.close();con=null;
}
if(!result.isEmpty()){
return result;
}else{
return null;
}
}
protected abstract Collection packResultSet(ResultSet rs,int beginRow,int
EndRow)
throws Exception;
/**
* @return rowsCount
*/
public int getRowsCount() {
return rowsCount;
}
/**
* @param rowsCount
*/
public void setRowsCount(int rowsCount) {
this.rowsCount = rowsCount;
}
/**
* @return rowsPage
*/
public int getRowsPage() {
return rowsPage;
}
/**
* @param rowsPage
*/
public void setRowsPage(int rowsPage) {
this.rowsPage = rowsPage;
}
/**
* @return rowsPerPage
*/
public int getRowsPerPage() {
return rowsPerPage;
}
/**
* @param rowsPerPage rowsPerPage
*/
public void setRowsPerPage(int rowsPerPage) {
this.rowsPerPage = rowsPerPage;
}
/**
* @return sql
*/
public String getSql() {
return sql;
}
/**
* @param sql
*
*/
public void setSql(String sql) {
this.sql = sql;
}
private void getAndSetAllRowsCount()throws Exception{
Connection con=new Pools().getConnection();
int fromPos=sql.indexOf(" from ");
String countSql="select count(*) "+sql.substring(fromPos);
int orderPos=countSql.indexOf(" order ");
countSql=countSql.substring(0,orderPos);
//System.out.println("com.0755.javaBean.panigation:"+countSql+".");
//System.out.println("com.0755.javaBean.panigation:"+this.getSql()+".");
PreparedStatement prep=con.prepareStatement(countSql);
ResultSet rs=prep.executeQuery();
if(rs.next()){
setRowsCount(rs.getInt(1));
}
if(rs!=null){
rs.close();
}
if(prep!=null){
prep.close();
}
if(con!=null){
con.close();con=null;
}
}
}
接着可以根据实际情况,继承父类.实现父类的抽象方法.
--
※ 修改:·guangzhougd 于 Nov 16 23:01:43 修改本文·[FROM: 192.168.124.24]
※ 来源:·荔园晨风BBS站 http://bbs.szu.edu.cn·[FROM: 192.168.124.24]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店