那你就写sql了,
指定top数,记录数..
指定top数,记录数..
解决方案 »
- el 表达式 里 equals 与==的区别
- 对于一个新手而言 怎么去看一个开源项目的源码
- jboss+mysql+linux问题
- log4j system.out jboss
- hibernate SQL查询两个表 两个相同的列名 返回结果被后面的覆盖了
- 那位朋友.推荐javeEE好书来..看看..我刚入门没多久..在这谢啦?
- 如何理解struts2跟踪用户状态
- 急!在线!南极裸奔跪求J2eeTotorial第17章 DUKE的银行完整源代码!马上给分!
- jdom中字符串太大,如何解决
- 怪!怪!怪!Oracle的classes12.zip的classpath的怪问题(100分在线等!!!)
- struts写jsp时无法显示图片!!!!
- 做GUI用什么开发语言好?
http://topic.csdn.net/u/20081007/15/01c35af3-a222-4f5e-a1d2-bf0728924327.html
里面有我写的一个分页完整方法
你可以用Hibernate的分页
用Query对象或者时Criatier的对象
比如:query.setFirstResult(1);
query.setMaxResult(5);
上面这个就是每一页显示5条数据,显示第一页
public List search(int pageNo,int pageSize){
Sessin session = this.getSession();
String hql = "from 实体名 t order by t.id asc";
Query query = session.createQuery(hql);
//firstResultIndex 从第几条数据开始
int firstResultIndex = pageSize*(pageNo - 1); //setFirstResult、setMaxResults表示的是:设置从第几条数据开始,共返回多少条数据
query.setFirstResult(firstResultIndex );
query.setMaxResults(pageSize);
}LZ试试吧。
m:第一条记录开始位置,
n:每页显示记录数
最好专门编写一个封装分页对象的类:package com.hh.onlineshop.po;/**
* 封装分页对象
*
* @author hc
*
*/
public class Page {
public static final int DEFAULT_PAGE_SIZE = 5;//默认的每页显示记录数 private int pageIndex;// 页码
private int pageSize;// 本页记录条数
private int totalCount;// 总记录条数
private int pageCount;// 总页数 public Page(int pageIndex,int pageSize){
if(pageIndex<1)
pageIndex=1;
if(pageSize<1)
pageSize=DEFAULT_PAGE_SIZE;
this.pageIndex=pageIndex;
this.pageSize=pageSize;
}
//没有指定当前页面显示记录条数,采用默认
public Page(int pageIndex){
this(pageIndex,DEFAULT_PAGE_SIZE);
}
public int getPageIndex() {
return pageIndex;
}
public int getPageSize() {
return pageSize;
} public int getPageCount() {
return pageCount;
} public int getTotalCount() {
return totalCount;
} public int getFirstResult(){
return (pageIndex-1)*pageSize;
}
public boolean getHasPrevious(){
return pageIndex>1;
}
public boolean getHasNext(){
return pageIndex<pageCount;
}
//设置总记录条数,同时也根据pageSize计算出总页数
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
pageCount=totalCount/pageSize+(totalCount%pageSize==0?0:1);
if(totalCount==0){
if(pageIndex!=1){
pageIndex=1;
}
}else{
if(pageIndex>pageCount){
pageIndex=pageCount;
}
}
} public boolean isEmpty(){
return totalCount==0;
}}
select * from TableName limit num1(指定从第几条记录开始查询),num2(从指定的记录往后查几条);
这不就可以实现分页吗?
query.setFirstResult(第几页);
query.setMaxResult(每页显示条数);
List retList = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return retList;
}
* 實現分頁查詢,參數使用SetString方式
* @param hql
* @param offset 開始索引
* @param length 查詢長度
* @param map 參數集合
* @return
*/
public List getListForPage(final String hql,final int offset, final int length,final Map map){
List retList = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
//loop集合中參數
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
String key = String.valueOf(it.next());
String value = String.valueOf(map.get(key));
query.setString(key,value);
}
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return retList;
}
query.setFirstResult();
query.setMaxResults();
query.setMaxResults();
select Top(" + page_size + ")* from Task where (ID not in(select top(" + (now_page - 1) * page_size + ")ID from Task)) page_size是你一页的大小
now_page 是当前你要显示第几页
当然,一下子考虑分页是怎么做的,就是有难度了,
如果你分析一下,
前台要一页显示10条,那么后台就要每次查询出10条来,
那样该怎么做呢?
首先是有个startRow,有个pageSize,有个totalRow,还可以多设置一个,自己设置分页大小,姑且可以和pageSize用同一个,或者是自己设置一个,
然后就是写代码,
前台由一个显示页的page,这个你可以单独写,然后嵌入到每一个页面当中,就跟你看的很多网页一样的
然后后台就写操作,
这样就ok了,
明白否?
自己动手吧,其实很简单的