开发手记---分页查询
2007-10-07 13:59
141 查看
分页查询
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;
}
}
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;
}
}
相关文章推荐
- IntelliJ IDEA中ajax开发实现分页查询示例
- Web开发——获取查询内容(内容分页显示)【前台页面部分】
- springmvc4+spring4+hibernate4注解开发,分页查询,表头排序,多条件模糊查询,查询自动补全功能
- java中软件开发的假分页和模糊查询的方法
- XMPP框架 微信项目开发之CoreData学习——CoreData的查询方式(模糊查询,嵌套查询,分页查询)
- ajax开发:分页查询功能
- Android开发之数据库的分页查询
- 基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理
- Lucene开发实例教程:Lucene中文分词、分页查询、高亮显示
- web开发中的分页查询
- 黑马程序员_学习日记49_618数据库开发及ADO.Net(多条件搜索、case…when…语句、索引Index、子查询、分页、Join语句)
- 基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用!
- MongoDB:mongodb在项目开发时的安全验证、分页查询操作
- [框架那点事儿-快速开发季]编写自己的数据持久层(4)分页查询
- IntelliJ IDEA中ajax开发实现分页查询
- MongoDB:mongodb在项目开发时的安全验证、分页查询操作
- JAVAWEB开发之分页显示、批量删除、条件查询 以及Listener监听器
- 插件开发技术说明(6)---分页查询示例
- 如何快速开发树形列表和分页查询整合的WInform程序界面
- 使用AspNetPager进行分页,查询条件丢失问题