本人现在使用的方法如下,下面是一个持久层的DAO:public class TbtagDAO extends DefaultDAO { /**
*分页时:每页显示记录条数
*/
public Integer numPP = 20; /**
* 当执行查询操作后,count将记录按当前查询条件查询到的结果的总条数
*/
private Long count = 0L;
/**
* 按页查询所有标签记录
* @param page - 页码
* @param numPP - 每页记录数
* @return
*/
public List findAll(Integer page,Integer numPP) {
log.debug("finding all Tbtag instances");
try {
if(page<0){
page = 1;
}
String queryString = "from Tbtag";
Session session = getSession();
String sql = "select count(tag_id) from Tbtag";
Query query = session.createSQLQuery(sql);
BigInteger c = (BigInteger)query.uniqueResult();
this.count = c.longValue();
Query queryObject = session.createQuery(queryString);
queryObject.setFirstResult((page-1)*numPP);
queryObject.setMaxResults(numPP);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
}
在上面类中的private Long count = 0L;由于我要在JSP页面上输出分页和页码,就是[首页,第一页,第二页....第N页,尾页]这样的东西,所以需要预先知道一共有多少页,这就要在每次查询时要先查询记录总数,并根据每页记录数来计算总共有有多少页.存在问题:就是每次都要查询记录总数,貌似会做很多重复的查询.
求解:是否有办法解决或改进上面提出的问题.或者有其它更好的分页办法,不一定非使用hibernate
*分页时:每页显示记录条数
*/
public Integer numPP = 20; /**
* 当执行查询操作后,count将记录按当前查询条件查询到的结果的总条数
*/
private Long count = 0L;
/**
* 按页查询所有标签记录
* @param page - 页码
* @param numPP - 每页记录数
* @return
*/
public List findAll(Integer page,Integer numPP) {
log.debug("finding all Tbtag instances");
try {
if(page<0){
page = 1;
}
String queryString = "from Tbtag";
Session session = getSession();
String sql = "select count(tag_id) from Tbtag";
Query query = session.createSQLQuery(sql);
BigInteger c = (BigInteger)query.uniqueResult();
this.count = c.longValue();
Query queryObject = session.createQuery(queryString);
queryObject.setFirstResult((page-1)*numPP);
queryObject.setMaxResults(numPP);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
}
在上面类中的private Long count = 0L;由于我要在JSP页面上输出分页和页码,就是[首页,第一页,第二页....第N页,尾页]这样的东西,所以需要预先知道一共有多少页,这就要在每次查询时要先查询记录总数,并根据每页记录数来计算总共有有多少页.存在问题:就是每次都要查询记录总数,貌似会做很多重复的查询.
求解:是否有办法解决或改进上面提出的问题.或者有其它更好的分页办法,不一定非使用hibernate
解决方案 »
- java关于数据分析和数据挖掘方面
- tomcat无法启动?
- 连接数据库的小问题
- js help
- 上传文件时产生的错误!!
- org.hibernate.exception.GenericJDBCException: Cannot open connection 错误!
- Need to specify class name in environment or system property
- 关于jdbc的返回值~
- 高分help!怎么解决jboss中文乱码问题?
- 这真的是hibernate的bug吗
- 一段简单的js问题:我想让表单提交之后自动关闭,现在没提交就已经关闭了
- 关于使用华为短信开发包发送和接收短信的问题。
第二就是写分页语句,每次去数据库取就只取目标范围内的数据。hibernate应该用的第一种方法。
==-=-=-=-==-=-=-=-=-=- System.out.println("Hello World!"); -=-=-==-=-=-=-=-=-=-=-==
===================================================================================
==-=-=-=-==-=-=-=-=-=- System.out.println("Hello World!"); -=-=-==-=-=-=-=-=-=-=-==
===================================================================================