javaee中oracle分页...
时间:2010-08-07 来源:tujun126
一、MVC分页
public class SqlPageSQL {
/**
*@param sql 原始sql语句
*@param curPage 第几页
*@param rowsPerPage 每页多少行
*/
//Oracle分页sql语句
public static String getPageOracle(String sql,int curPage,int rowsPerPage){
//开始行数
int begin = (curPage-1)*rowsPerPage;
//结尾行数
int end = begin + rowsPerPage;
StringBuffer pagingSelect = new StringBuffer(200);
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
pagingSelect.append(sql);
pagingSelect.append(" ) row_ where rownum <= "+end+") where rownum_ > "+begin);
return pagingSelect.toString();
}
}
二、Hibernate单独分页
/**
* 获取对应用户的每一页的日记列表
*
* @param String author
* @param int currentpage
* @param int rowspage
* @return List<DiaryBean>
* @author tujun 2010-06-09
*/
public static List<Diarys> getOnePageDiaryByAuthor(String author,int currentpage, int rowspage) {
//读取配置信息
Configuration cfg = new Configuration().configure();
//创建会话工厂
SessionFactory factory = cfg.buildSessionFactory();
//通过工厂去打开会话
Session session = factory.openSession();
//开启一个事务
session.beginTransaction();
//持久化对象
Query query = session.createQuery("from Diarys d where d.author =?");
query.setString(0, author);
query.setFirstResult(currentpage*rowspage);//从第几条记录开始查询。
query.setMaxResults(rowspage);//表示一次查询多少条记录;
List<Diarys> list=query.list();
//提交事务
session.getTransaction().commit();
//关闭会话
session.close();
return list;
}
三、spring+Hibernate组合分页
方法①:分页器分页
public List<Buied> getOnePageDiaryByAuthor(String t_buy_u_id, int currentpage,int rowspage) {
List<Buied> list=new ArrayList<Buied>();
DetachedCriteria d=null;
DetachedCriteria a=d.forClass(Buied.class, t_buy_u_id);
list=this.getHibernateTemplate().findByCriteria(a, currentpage*rowspage, rowspage);
return list;
}
方法②:subList函数分页
public List<Buied> getOnePageDiaryByAuthor(String t_buy_u_id, int currentpage,int rowspage) {
List<Buied> list=new ArrayList<Buied>();
int size=this.getHibernateTemplate().find(BUYNOTE,t_buy_u_id).size();
if(size-currentpage*rowspage>rowspage){
list=this.getHibernateTemplate().find(BUYNOTE,t_buy_u_id).subList(currentpage*rowspage, currentpage*rowspage+rowspage);
}else{
list=this.getHibernateTemplate().find(BUYNOTE,t_buy_u_id).subList(currentpage*rowspage, currentpage*rowspage+size-currentpage*rowspage);
}
return list;
}