import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;import javax.servlet.http.HttpServletRequest;import cn.invix.struts.database.OperateDbNew;public class PageManage {
OperateDbNew dbOperation = new OperateDbNew();
private int nTotal = 0; //查询总数量
/**
* 查询总数量
* @return nTotal 返回总数量
*/
public int getTotal(){
return nTotal;
}
/**
* 分页查询。
* @param strSQL 查询的SQL语句
* @param strPage 查询的页数
* @param strPageSize 一页中要显示的记录数
* @return rs 返回分页查询的结果集
*/
public List pageSelect(Connection conn, String strSQL,int nPage,int nPageSize){
String strSql = "";
PreparedStatement stmt = null;
ResultSet rs = null;
this.nTotal = 0;
List list = null;
try{
//求查询结果的数量
//int nPos = strSQL.toLowerCase().indexOf("from");
String strSqlCount = "select count(*) from("+strSQL+")";
stmt = conn.prepareStatement(strSqlCount);
rs = stmt.executeQuery();
if(rs.next()){
this.nTotal = rs.getInt(1);
}
rs.close();
stmt.close();
//查询的具体内容
int nFirstRecord = (nPage-1) * nPageSize+1; //第一条记录
int nLastRecord = nPage * nPageSize; //最后一条记录
strSql = "select * from (select t.* ,rownum mynum from ("+
strSQL+" ) t) where mynum between "+
Integer.toString(nFirstRecord) +
" and "+ Integer.toString(nLastRecord);
list = dbOperation.getResultList(conn,strSql);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
*
* @param strUrl
* @param strId
* @param iTotleNum
* @param curPage
* @param pageCount
* @return
*/
public String pageInfor(String strUrl, String strId, int iTotleNum,int curPage,int pageCount){
int totalPage = iTotleNum % pageCount == 0 ? (iTotleNum/pageCount):(iTotleNum/pageCount+1);
int[] intPageArr = new int[3];
intPageArr[0] = iTotleNum;
intPageArr[1] = totalPage;
intPageArr[2] = curPage;
return this.pageInfor(strUrl,strId,intPageArr);
}
/**
*
* @param strUrl
* @param strId
* @param pageArr
* @return
*/
public String pageInfor(String strUrl, String strId, int pageArr[])
{
String pageinfor = "";
int maxCount = 0;
int totalPage = 0;
int curPage = 0;
int pageBegin = 0;
int pageEnd = 0;
maxCount = pageArr[0];
totalPage = pageArr[1];
curPage = pageArr[2];
if(curPage - 3 > 0)
pageBegin = curPage - 3;
else
pageBegin = 1;
if(curPage + 3 < totalPage)
pageEnd = curPage + 3;
else
pageEnd = totalPage;
pageinfor = "总共 " + maxCount + " 项 " + totalPage + "页 当前是第 " + curPage + " 页";
if(curPage <= 1)
pageinfor = pageinfor + " 首页 | 上一页 |";
else
pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=1" + "> 首页</a> | <a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage - 1) + "> 上一页 </a>| ";
for(; pageBegin <= pageEnd; pageBegin++)
if(pageBegin == curPage)
pageinfor = pageinfor + " " + pageBegin + " ";
else
pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + pageBegin + "> " + pageBegin + " </a>"; if(curPage == totalPage)
pageinfor = pageinfor + "|下一页 | 末页";
else
pageinfor = pageinfor + " |<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage + 1) + "> 下一页</a> | <a href=" + strUrl + "?id=" + strId + "&page=" + totalPage + ">末页</a> ";
return pageinfor;
}
/**
* 得到当前页数
*
* @param request
*
* */
public int getCurPage(HttpServletRequest request){
//当前页数
int curPage = 1;
String strCurPage = request.getParameter("page");
if(strCurPage != null && !strCurPage.equals(""))
{
curPage = Integer.parseInt(strCurPage);
}
return curPage;
}
public static void main(String[] args) {
}
}
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;import javax.servlet.http.HttpServletRequest;import cn.invix.struts.database.OperateDbNew;public class PageManage {
OperateDbNew dbOperation = new OperateDbNew();
private int nTotal = 0; //查询总数量
/**
* 查询总数量
* @return nTotal 返回总数量
*/
public int getTotal(){
return nTotal;
}
/**
* 分页查询。
* @param strSQL 查询的SQL语句
* @param strPage 查询的页数
* @param strPageSize 一页中要显示的记录数
* @return rs 返回分页查询的结果集
*/
public List pageSelect(Connection conn, String strSQL,int nPage,int nPageSize){
String strSql = "";
PreparedStatement stmt = null;
ResultSet rs = null;
this.nTotal = 0;
List list = null;
try{
//求查询结果的数量
//int nPos = strSQL.toLowerCase().indexOf("from");
String strSqlCount = "select count(*) from("+strSQL+")";
stmt = conn.prepareStatement(strSqlCount);
rs = stmt.executeQuery();
if(rs.next()){
this.nTotal = rs.getInt(1);
}
rs.close();
stmt.close();
//查询的具体内容
int nFirstRecord = (nPage-1) * nPageSize+1; //第一条记录
int nLastRecord = nPage * nPageSize; //最后一条记录
strSql = "select * from (select t.* ,rownum mynum from ("+
strSQL+" ) t) where mynum between "+
Integer.toString(nFirstRecord) +
" and "+ Integer.toString(nLastRecord);
list = dbOperation.getResultList(conn,strSql);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
*
* @param strUrl
* @param strId
* @param iTotleNum
* @param curPage
* @param pageCount
* @return
*/
public String pageInfor(String strUrl, String strId, int iTotleNum,int curPage,int pageCount){
int totalPage = iTotleNum % pageCount == 0 ? (iTotleNum/pageCount):(iTotleNum/pageCount+1);
int[] intPageArr = new int[3];
intPageArr[0] = iTotleNum;
intPageArr[1] = totalPage;
intPageArr[2] = curPage;
return this.pageInfor(strUrl,strId,intPageArr);
}
/**
*
* @param strUrl
* @param strId
* @param pageArr
* @return
*/
public String pageInfor(String strUrl, String strId, int pageArr[])
{
String pageinfor = "";
int maxCount = 0;
int totalPage = 0;
int curPage = 0;
int pageBegin = 0;
int pageEnd = 0;
maxCount = pageArr[0];
totalPage = pageArr[1];
curPage = pageArr[2];
if(curPage - 3 > 0)
pageBegin = curPage - 3;
else
pageBegin = 1;
if(curPage + 3 < totalPage)
pageEnd = curPage + 3;
else
pageEnd = totalPage;
pageinfor = "总共 " + maxCount + " 项 " + totalPage + "页 当前是第 " + curPage + " 页";
if(curPage <= 1)
pageinfor = pageinfor + " 首页 | 上一页 |";
else
pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=1" + "> 首页</a> | <a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage - 1) + "> 上一页 </a>| ";
for(; pageBegin <= pageEnd; pageBegin++)
if(pageBegin == curPage)
pageinfor = pageinfor + " " + pageBegin + " ";
else
pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + pageBegin + "> " + pageBegin + " </a>"; if(curPage == totalPage)
pageinfor = pageinfor + "|下一页 | 末页";
else
pageinfor = pageinfor + " |<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage + 1) + "> 下一页</a> | <a href=" + strUrl + "?id=" + strId + "&page=" + totalPage + ">末页</a> ";
return pageinfor;
}
/**
* 得到当前页数
*
* @param request
*
* */
public int getCurPage(HttpServletRequest request){
//当前页数
int curPage = 1;
String strCurPage = request.getParameter("page");
if(strCurPage != null && !strCurPage.equals(""))
{
curPage = Integer.parseInt(strCurPage);
}
return curPage;
}
public static void main(String[] args) {
}
}
解决方案 »
- 寻找性能好的UI框架
- 关于一个双重for循环判断的问题,大家帮忙看看
- org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentExce
- 请高手指教下
- 50分:java中如何转发邮件
- 大家帮我看一下这个程序.. 怀疑传参失败
- 我是初学!谁能告诉我!(分用完了)
- 在SQL中只有时间是唯一性了?
- 在脚本中如何判断全角字符的长度
- 在servlet中用什么方法获得ckeditor编辑器的内容(可能含有图片)
- 在Hql查询语句中如何能将日期类型的数据查询得到String 类型,并将其处理成4位的年
- 问一个hibernate菜菜的问题啊,我是新手
strSql = strSQL + " limit " + nFirstRecord + "," + nPageSize
select count(*) from (select * from a)