如下Query提供的方法可以实现分页:
1. setFirstResult
从第几条开始取记录
2. setMaxResult
一次取多少条记录
使用此方法进行分页,具有可移植性,下面写一段代码:
HibernateUtil.java
private static final SessionFactory sessionFactory;
static {
sessionFactory = new configuration.buildSessoinFactory();
//如果在hibernate.cfg.xml中配置过的话(<mapping resource="com/sidi/vo/UserBean.hbm.xml" />)
//sessionFactory = new configuration().configure().buildSessoinFactory();
}
private HibernateUtil () {
}
publicv static SessionFactory getFactory () {
return sessionFactory;
}
hibernate.properties
hibernate.current_session_content_class thread;
new action:listUser
execute () {
String target = "success";
String pageStr = request.getParameter ("page");
int page = 1;
try {
page = Integer.parseInt (pageStr);
} catch (NumberFormatException e) {
page = 1;
}
SessionFactory factory = HibernateUtil.getFactory ();
Session session = null;
try {
session = factory.getCurrentSession();
session.beginTransaction();
Query q = session.creatQuery("from UserBean")
.setFirstResult(page-1)*5
.setMaxResults(5);
List list = q.list();
q = session.creatQuery("select count(*) from UserBean");
Integer i = (Integer)q.uniqueResult();
Integer totalpage = new Integer((i.intValue()+4)/5);
request.setAttribute("list",list);
request.setAttribute("totalpage",totalpage);
request.setAttribute("page",new Integer(page));
} catch (HibernateExeception e) {
session.getTranction().rollback();
e.printStackTrace();
throw e;
} finally {
if (session!=null) {
session.close();
session = null;
}
}
return mapping.findForward(target);
}
listuser.jsp
<table align="center">
<logic:iterate id="user" name="list">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.pw}</td>
</tr>
</logic:iterate>
</table>
分页部分
<table align="center">
<tr>
<td><a href="listUser.do">首页</a></td>
<td><logic:lessEqual name="page" value="1">上一页</logic:lessEqual></td>
<td><logic:greaterThan name="page" value="1"><a href="listUser.do?page=${page-1}">上一页
</a></logic:greaterThan></td>
<td><logic:lessEqual name="page" value="${totalpage}"><a href="listUser.do?
page=${page+1}">下一页</a></logic:lessEqual></td>
<td><logic:greaterThan name="page" value="${totalpage}">下一页</logic:greaterThan></td>
<td><a href="listUser.do?page=${totalPage}">尾页</a></td>
</tr>
</table>