分页查询实现:
public void queryByPage(int pageNum, int countNum){
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
sf = HibernateSingletonUtil.getSessionFactory();
session = sf.getCurrentSession();
ts = session.beginTransaction();
Query query = session.createQuery("from User");
query.setFirstResult((pageNum - 1) * countNum);
query.setMaxResults(countNum);
List<User> userList = query.list();
query = session.createQuery("select round(count(u) / :num) from User u");
query.setParameter("num", (long)countNum);
long totalPage = (long)query.uniqueResult();
for (User user : userList) {
System.out.println(user.toString());
}
System.out.println("第" + pageNum + "页,"+ userList.size() + "条数据,共" + totalPage + "页");
ts.commit();
} catch (HibernateException e) {
e.printStackTrace();
if (ts != null){
ts.rollback();
}
}
}
public static void main(String[] args) {
UserDao ud = new UserDao();
ud.queryByPage(1, 10);
}
查询第1页的数据,每页10条。