java&sql的分页怎么做?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java&sql的分页怎么做?相关的知识,希望对你有一定的参考价值。
我用Borland JBuilder &sql做分页 具体能给我点思路吗?
自己写的话,其实也很简单:第一中就是,你先将所有的数据都取出来,在程序中将这个LIST,根据每页几条分成几段,页面上传过来页码就直接调用LIST就行;你可以写个方法 根据页码到整个LIST中取出当前页需要显示的数据就,可以了
第二种就是,根据页码 来设置数据数据库中查询的行数从几行到几行;也不难
第一种是在程序里分,第二种是在数据库中分;
推荐用第一种哈,少访问几次数据库;呵呵 参考技术A 这个跟数据库有关,分页一定要根据一定顺序先排序,再分页。你可以计算出第N个位置的数据的排序字段的值,和N+M个数据的排序字段值,然后区这个区间的所有数据。SQL server可以用top关键字,oralce可以用 rownum。 参考技术B public class UserPageDAO
DBManager dbManager = null;
private int pageItem; //一页显示多少条数据
private int pageRow; //当前是多少页
private int dataCount; //一共多少条数据
public UserPageDAO()
dbManager = new DBManager();
/*
* pageItem设置一页显示多少行
*/
public UserPageDAO(int pageItem)
this.pageItem = pageItem;
dbManager = new DBManager();
ArrayList<UserPageVO> arr = null;
UserPageVO userPage = null;
public ArrayList<UserPageVO> showPage(int pageRow)
try
int page = this.pageItem * (pageRow - 1) ;
String sql = "select top " + this.pageItem + " id, name, password from page where id not in (select top " + page + "id from page )";
ResultSet res = dbManager.query(sql);
arr = new ArrayList<UserPageVO>();
while (res.next())
userPage = new UserPageVO();
userPage.setId(res.getString("id"));
userPage.setName(res.getString("name"));
userPage.setPassword(res.getString("password"));
arr.add(userPage);
return arr;
catch(Exception e)
e.printStackTrace();
return null;
/*
* 返回一共有多少页
*/
public int getPageCount()
try
String sql = "select count(*) from page";
ResultSet res = dbManager.query(sql);
if (res.next())
this.dataCount = res.getInt(1); //得到有多少条数据
else
this.dataCount = 0;
if (this.dataCount % this.pageItem == 0 )
return this.dataCount / this.pageItem;
else
return this.dataCount / this.pageItem + 1;
catch(Exception e)
e.printStackTrace();
return 0;
public int getDataCount()
return dataCount;
public void setDataCount(int dataCount)
this.dataCount = dataCount;
public int getPageItem()
return pageItem;
public void setPageItem(int pageItem)
this.pageItem = pageItem;
public int getPageRow()
return pageRow;
public void setPageRow(int pageRow)
this.pageRow = pageRow;
写一个分页类,再写一个方法传入当前页数 参考技术C 可以用这个pager-taglib-2.0.war做
很简单样式也多
java常见的分页实现方式
1.使用List接口中subList(int startIndex,int endIndex)方法实现分页
2.直接使用数据库SQL语句实现分页
3.使用hibernate等框架实现跨数据库的分页
Mysql查询语句
select * from t_student limit 0,10
PostgreSQL查询语句
select * from t_student limit 10 offset 0
Oracle查询语句
select * from
(
select s.*,rownum rn from (select * from t_student)s where rownum<=10
)
where rn>=1
使用hibernate框架进行分页
创建Query或者Criteria对象,查询时,设置firstResult和maxResult属性
String hql="from Student";
Query q=session.createQuery(hql);
q.setFirstResult(0);
q.setMaxResults(10);
q.setMaxResults(10);
List l=q.list();
以上是关于java&sql的分页怎么做?的主要内容,如果未能解决你的问题,请参考以下文章