© 1999-2048 dssz.net 粤ICP备11031372号
Title: 分页查询
*Description: 根据查询语句和页码查询出当页数据
*Copyright: Copyright (c) 2002
* @author evan_zhao@hotmail.com * @version 1.0 */ public abstract class PagedStatement { public final static in t MAX_PAGE_SIZE = Page.MAX_PAGE_SIZE; protected String countSQL, querySQL; protected int pageNo,pageSize,startIndex,totalCount; protected javax.sql.RowSet rowSet; protected RowSetPage rowSetPage; private List boundParams; /** * 构造一查询出所有数据的PageStatement * @param sql query sql */ public PagedStatement(String sql){ this(sql,1,MAX_PAGE_SIZE); } /** * 构造一查询出当页数据的PageStatement * @param sql query sql * @param pageNo 页码 */ public PagedStatement(String sql, int pageNo){ this(sql, pageNo, Page.DEFAULT_PAGE_SIZE); } /** * 构造一查询出当页数据的PageStatement,并指定每页显示记录条数 * @param sql query sql * @param pageNo 页码 * @param pageSize 每页容量 */ public PagedStatement(String sql, int pageNo, int pageSize){ this.pageNo = pageNo; this.pageSize = pageSize; this.startIndex = Page.getStartOfAnyPage(pageNo, pageSize); this.boundParams = Collections.synchronizedList(new java.util.LinkedList()); this.countSQL = "select count(*) from ( " + sql +") "; this.querySQL = intiQuerySQL(sql, this.startIndex, pageSize); } /** *生成查询一页数据的sql语句 *@param sql 原查询语句 *@startIndex 开始记录位置 *@size 需要获取的记录数 */ protected abstract String intiQuerySQL(String sql, int startIndex, int size); /** *使用给出的对象设置指定参数的值 *@param index 第一个参数为1,第二个为2,。。。 *@param obj 包含参数值的对象 */ public void setObject(int index, Object obj) throws SQLException{ BoundParam bp = new BoundParam(index, obj); boundParams.remove(bp); boundParams.add( bp); } /** *使用给出的对象设置指定参数的值 *@param index 第一个参数为1,第二个为2,。。。 *@param obj 包含参数值的对象 *@param targetSqlType 参数的数据库类型 */ public void setObject(int index, Object obj, int targetSqlType) throws SQLException{ BoundParam bp = new BoundParam(index, obj, targetSqlType); boundParams.remove(bp); boundParams.add(bp ); } /** *使用给出的对象设置指定参数的值 *@param index 第一个参数为1,第二个为2,。。。 *@param obj 包含参数值的对象 *@param targetSqlType 参数的数据库类型(常量定义在java.sql.Types中) *@param scale 精度,小数点后的位数 * (只对targetSqlType是Types.NUMBER或Types.DECIMAL有效,其它类型则忽略) */ public void setObject(int index, Object obj, int targetSqlType, int scale) throws SQLException{ BoundParam bp = new BoundParam(index, obj, targetSqlType, scale) ; boundParams.remove(bp); boundParams.add(bp); } /** *使用给出的字符串设置指定参数的值 *@param index 第一个参数为1,第二个为2,。。。 *@param str 包含参数值的字符串 ...展开收缩