抄段别人的代码,学习一下:
package com.....eqa.pageshow.action;
import java.util.List;
import org.apache.struts.action.Action;
import org.springframework.jdbc.core.JdbcTemplate;
import com.kingstargroup.framework.dao.Page;
public abstract class AbstractPageShowAction extends Action {
protected final int defaultPageSize = 50;
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
protected Page queryForPage(String sql, int pageNo, int pageCount, Object[] args) {
String strSql = "";
int startNo = Page.getStartOfPage(pageNo, pageCount);
int endNo = startNo + pageCount;
int argsCount = args.length;
int totleCount = queryForCount(sql, args);
Object[] new_args;
if(startNo==0){
strSql = "select * from (" + sql + ") where rownum <= ?";
new_args = new Object[argsCount+1];
}
else{
strSql = "select * from (select row_.*,rownum rownum_ from (" + sql + ") row_ where rownum <= ?) where rownum_>?";
new_args = new Object[argsCount+2];
new_args[argsCount + 1] = new Integer(startNo);
}
for(int i=0; i<argsCount; i++){
new_args[i] =args[i];
}
new_args[argsCount] = new Integer(endNo);
List list = jdbcTemplate.queryForList(strSql, new_args);
return new Page(startNo, totleCount, pageCount, list);
}
private int queryForCount(String sql, Object[] args){
String strSql = "select count(rowid) from ( " + sql + ")";
return jdbcTemplate.queryForInt(strSql, args);
}
}
package com.....framework.dao;
import java.util.ArrayList;
import java.util.Collection;
import com.kingstargroup.framework.dao.hibernate.BaseHibernateDao;
/**
* 分页对象. 包含数据及分页信息.
*
* @author ajax
*/
public class Page implements java.io.Serializable {
/**
* 当前页第一条数据的位置,从0开始
*/
private int start;
/**
* 每页的记录数
*/
private int pageSize = BaseHibernateDao.DEFAULT_PAGE_SIZE;
/**
* 当前页中存放的记录
*/
private Object data;
/**
* 总记录数
*/
private int totalCount;
private int size;
/**
* 构造方法,只构造空页
*/
public Page() {
this(0, 0, BaseHibernateDao.DEFAULT_PAGE_SIZE, new ArrayList());
}
/**
* 默认构造方法
*
* @param start
* 本页数据在数据库中的起始位置
* @param totalSize
* 数据库中总记录条数
* @param pageSize
* 本页容量
* @param data
* 本页包含的数据
*/
public Page(int start, int totalSize, int pageSize, Object data) {
this.pageSize = pageSize;
this.start = start;
this.totalCount = totalSize;
this.data = data;
if (data instanceof Collection)
this.size = ((Collection) data).size();
else
this.size = ((Object[]) data).length;
}
/**
* 取数据库中包含的总记录数
*/
public int getTotalSize() {
return this.totalCount;
}
/**
* 取总页数
*/
public int getTotalPageCount() {
if (totalCount % pageSize == 0)
return totalCount / pageSize;
else
return totalCount / pageSize + 1;
}
/**
* 取每页数据容量
*/
public int getPageSize() {
return pageSize;
}
/**
* 当前页中的记录
*/
public Object getResult() {
return data;
}
/**
* 取当前页码,页码从1开始
*/
public int getCurrentPageNo() {
return (start / pageSize) + 1;
}
/**
* 是否有下一页
*/
public boolean hasNextPage() {
return (this.getCurrentPageNo() < this.getTotalPageCount() - 1);
}
/**
* 是否有上一页
*/
public boolean hasPreviousPage() {
return (this.getCurrentPageNo() > 1);
}
/**
* 获取任一页第一条数据的位置,每页条数使用默认值
*/
protected static int getStartOfPage(int pageNo) {
return getStartOfPage(pageNo, BaseHibernateDao.DEFAULT_PAGE_SIZE);
}
/**
* 获取任一页第一条数据的位置,startIndex从0开始
*/
public static int getStartOfPage(int pageNo, int pageSize) {
return (pageNo - 1) * pageSize;
}
public int getSize() {
return this.size;
}
}
分享到:
相关推荐
使用jdbc数据库连接池与oracle实现的分页功能,包含一个表的增删改功能
NULL 博文链接:https://abstractforever.iteye.com/blog/606827
简单实用的分页代码(oracle+jdbc)
oracle采用jdbc连接方式分页 附带oracle驱动包
这是一个已经封装好的分页,拿来就可以用,具体细节参考说明。觉得不错要分享啊
数据库采用oracle,完成jsp增删改查、查询、过滤、分页、排序功能。对刚刚接触jsp的软件开发人员来说绝对是最好的范例。
JSP+JDBC_真分页(基于Oracle数据库分页).
sql语句分页查询 自己总结下来的 希望能给大家一点帮助!
JSP+JDBC_真分页(基于Oracle数据库分页)笔记JSP+JDBC_真分页(基于Oracle数据库分页)笔记JSP+JDBC_真分页(基于Oracle数据库分页)笔记
jsp分页 oracle 插件demo 下载此demo后 打开myeclipse import此demo 根据实际情况修改jdbc properties配置文件
tomcat是apache-tomcat-7.0.41,myeclipse是MyEclipse 9.0,oracle是11g。例子中用的是海量数据账户sh下的sales表,如果想运行的话,需要对sh账户解锁。项目中的数据库链接串是:"jdbc:oracle:thin:@192.168.1.101:...
oracle数据库级分页 老师写的自己项目中都用这个
1:本系统为servlet,jdbc,oracle实现的数据库增删改查处理; 功能包含有分页查询,jquery日历控件; 简单的登陆处理页面; 数据库存数据时,密码采用MD5 32位小写加密保存 注:ie浏览器下能够正常显示样式,...
JDBC分页技术适合于sqlserver,Oracle,Access,MySql
对JDBC的封装,适合多种数据库,使用简单方便。...包含对oracle,mysql,sqlserver等数据库的分页查询实现,之前传的没有simple,这次加上了 (欢迎下载我的最新改良版本:http://download.csdn.net/source/1644852)
关于oracle 的分页、翻页的java源代码,结合JDBC连接数据库实现,比较基础的JDBC结合swing图形框架实现,适合Java初学者使用
10.分页查询,查询多条记录,以List存Map的形式返回 public static List getPageManyMap(String sql, List args,int page,int pageSize) 源码用到的DateUtil工具类,请到...
功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle --%> ;charset=8859_1" %> //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 ...
使用JDBC技术连接oracle数据库,并且实现简单的数据分页,能够更加高效的提取数据