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的分页怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 中的分页符

在oracle数据库中的分页SQL语句怎么写?

对数据分页后,2次查询的分页,点击上一页,下一页,首页,尾页,都会跳到2次查询之前的分页显示,怎么办

想用JAVA WEB 实现分页技术。请问应该怎么做

oracle分页 语句

关于Java的分页算法,急!