📄 pagehelper.java.svn-base
字号:
package org.derrick.jdbc.page;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.RowSetDynaClass;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.derrick.jdbc.ConnectionFactory;
import org.derrick.jdbc.page.sql.PageSqlHelper;
/**
* 用于分页的辅助类,若有提供 DbToObject 接口, 则返回的对象类型由改接口确定,否则返回的对象类型为:DynaBean
*
* @see org.apache.commons.beanutils.DynaBean
* @see DbToObject
* @author 刘冬宝Oct 26, 2006
版权申明:所有人员均可自由修改源码并再发布,但必须保留此相关信息
*
*/
public class PageHelper {
private Connection conn = null;
private DbToObject dbToObject = null;
protected final Logger logger = LogManager.getLogger(getClass());
private PageSqlHelper pageSqlHelper = null;
public PageHelper(Connection conn, PageSqlHelper pageSqlHelper) {
this(conn, pageSqlHelper, null);
}
public PageHelper(Connection conn, PageSqlHelper pageSqlHelper,
DbToObject dbToObject) {
this.conn = conn;
this.pageSqlHelper = pageSqlHelper;
this.dbToObject = dbToObject;
this.init();
}
public DbToObject getDbToObject() {
return dbToObject;
}
/**
* 如果条件中包含有?形式参数,请改写该方法,并设置相应的参数
* @param pst
*/
public void preparedPageStatemet(PreparedStatement pst){
}
/**
* 返回该页的对象集合,若有提供 DbToObject 接口, 则返回的对象类型由改接口确定,否则返回的对象类型为:DynaBean
* 若页码无效则返回empty list
*
* @param pageNo
* 页码
* @return
* @see org.apache.commons.beanutils.DynaBean
* @see DbToObject
*/
public List getPage(int pageNo) {
List results = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
pst = conn.prepareStatement(this.pageSqlHelper.getPageSql(pageNo));
preparedPageStatemet(pst);
rs = pst.executeQuery();
int rownum = 1;
if (this.dbToObject == null) {
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
results = rsdc.getRows();
} else {
results = new ArrayList();
while (rs.next()) {
Object result = this.dbToObject.mapRow(rs, rownum);
rownum++;
results.add(result);
}
}
} catch (InvalidPageNoException e) {
logger.error(null, e);
results = new ArrayList(0);
} catch (Exception e) {
logger.error(null, e);
throw new RuntimeException(e);
} finally {
ConnectionFactory.closeResultSet(rs);
ConnectionFactory.closeStatement(pst);
}
return results;
}
public PageSqlHelper getPageSqlHelper() {
return pageSqlHelper;
}
/**
*
* @return 总页数
*/
public int getTotalPage() {
return this.pageSqlHelper.getTotalPage();
}
/**
*
* @return 总记录数
*/
public int getRecordTotalnum() {
return this.pageSqlHelper.getRecordTotalnum();
}
/**
* 初始化必要的参数,主要是获取总记录数。
*
*/
private void init() {
PreparedStatement pst = null;
ResultSet rs = null;
try {
pst = conn.prepareStatement(this.pageSqlHelper
.getRecordTotalnumSql());
rs = pst.executeQuery();
rs.next();
int totalRecordCount = rs.getInt(1);
logger.debug("totalRecordCount:" + totalRecordCount);
this.pageSqlHelper.setRecordTotalnum(totalRecordCount);
} catch (SQLException e) {
logger.error(null, e);
throw new RuntimeException(e);
} finally {
ConnectionFactory.closeResultSet(rs);
ConnectionFactory.closeStatement(pst);
}
}
public void setDbToObject(DbToObject dbToObject) {
this.dbToObject = dbToObject;
}
public void setPageSqlHelper(PageSqlHelper pageSqlHelper) {
this.pageSqlHelper = pageSqlHelper;
}
public void setRecordPageCount(int count) {
this.pageSqlHelper.setRecordnumPerPage(count);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -