开发手记---分页查询
来源:互联网 发布:传奇怪物数据论坛 编辑:程序博客网 时间:2024/05/16 04:41
分页查询
JAVA开发中的一个重难题
说明:
我做的这个分页类,实现了每次查询取出一页的数据,解决了数据库性能问题.
添加的连接池的支持,解决了连接耗时问题.
过程:
首先初始化一个Page类,其中三个参数
分别为:要执行的SQL,操作的表,及每页记录数
初始得到总记录,页.
用getPage调用PageSet得到单页,返回ResultSet
package shop.Page;
/**
数据查询分页类
*/
import java.sql.*;
import shop.DbPool.*;//自定义的连接池类
public class Page {
private int pageCount=0;//总页数
private int pageNo=1;//当前页
private int pageSize=10;//每页记录数
private int rowCount=0;//总记录数
private String sql="";//查询语句
private ResultSet rs;
private Connection con;
Pool pool;
ExceuteQuery ex; //自定义CONNECTION查询类,用于查询返回
PageSet pageset=new PageSet();//子页集
Statement stmt;
public Page(String sql,String table,int pageS) {
//初始化查询
pageSize=pageS;
this.sql=sql;
//////////////////查询总记录数//////////////
//从连接池取得连接
pool = Pool.getInstance();
con = pool.getConnection();
ex = new ExceuteQuery(con);
//查询
try{
rs=ex.execute("select count(*) from "+table);
if (rs.next())
rowCount = rs.getInt(1);//取得总记录数
}
catch(Exception e)
{
System.out.println("查询总记录数出错,位置:Page.Page");
}
pageCount=rowCount/pageSize+1;//计算总页数
pool.freeConnection(con);
}
//取得一页
public ResultSet getPage()
{
ResultSet rss=null;
rss=pageset.getPage(sql,(pageNo-1)*pageSize,pageSize);
return rss;
}
//取得指定的一页
public ResultSet getPage(int pagenum)
{
ResultSet rss=null;
if(pagenum>=1&&pagenum<=pageCount)//指定页数在总页数范围内
{
rss=pageset.getPage(sql,(pagenum-1)*pageSize,pageSize);
pageNo=pagenum;
}
return rss;
}
//取得前一页
public ResultSet getPrePage()
{
ResultSet rss=null;
if(pageNo>1)
{
pageNo--;
rss = pageset.getPage(sql, (pageNo - 2) * pageSize, pageSize);
}
return rss;
}
//取得后一页
public ResultSet getNextPage()
{
ResultSet rss=null;
if(pageNo<pageCount)
{
pageNo++;
rss = pageset.getPage(sql, pageNo * pageSize, pageSize);
}
return rss;
}
//首页
public ResultSet firstPage()
{
ResultSet rss=null;
rss=pageset.getPage(sql,0,pageSize);
return rss;
}
//尾页
public ResultSet lastPage()
{
ResultSet rss=null;
rss=pageset.getPage(sql,(pageCount-1)*pageSize,pageSize);
return rss;
}
//获得总页数
public int getPageCount()
{
return pageCount;
}
//获得总记录数
public int getRowCount()
{
return rowCount;
}
//获得页面记录数
public int getPageSize()
{
return pageSize;
}
//获得当前页号
public int getPageNo()
{
return pageNo;
}
//是否有后页
public boolean next()
{
if(pageNo<pageCount)
{
pageNo++;
return true;
}
else return false;
}
//是否有前页
public boolean pre()
{
if(pageNo>1)
return true;
else return false;
}
}
package shop.Page;
/**
分页查询,单页查询
提取单页数据供Page调用
MySql中使用limit 记录条数 offset 起始记录 来得到一页数据
*/
import java.sql.*;
import shop.DbPool.*; //自定义的连接池类
public class PageSet {
private ResultSet rs;
private Connection con;
Pool pool;
ExceuteQuery ex; //自定义CONNECTION查询类,用于查询返回
public PageSet() {
}
//返回一页
public ResultSet getPage(String sql, int start, int size) {
//从连接池取得连接
pool = Pool.getInstance();
con = pool.getConnection();
ex = new ExceuteQuery(con);
//构造查询语句
String st = null;
String si = null;
st = st.valueOf(start);
si = si.valueOf(size);
String sqll = " limit " + si + " offset " + st; //此句用于在MYSQL中查询特定大小的一页
//查询
rs = ex.execute(sql + sqll);
pool.freeConnection(con);
return rs;
}
}
- 开发手记---分页查询
- ajax开发:分页查询功能
- web开发中的分页查询
- 开发手记
- 项目开发经验分享—分页查询
- Android开发之数据库的分页查询
- Hibernate统计查询手记
- SQL查询语句手记
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 分页查询
- 最近开始学习Ajax
- 太慢了
- 基于Carbide.c++的Symbian开发环境搭建
- Linux下Apache+MySQL+PHP的安装配置
- linux下挂载windows ntfs分区
- 开发手记---分页查询
- 网页设计必须注意的几个问题
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- Linux分区的命名
- Java 实训3-3 图形界面java applet 用户输入正整数 不是则标签提示错误
- 职业与人生
- 索引填充因子
- 质量保证的六个模式(7) - 代码拥有者模式
- 质量保证的六个模式(8) - 质量在于意识的改变