用的是
query.setFirstResult();
query.setMaxResults();
两种方法来限定查询的范围。且不分数据库,对MySQL和Oracle都适用。分页查询时,先按正常的语句查,最后加上这两句就可以了,如:
public ArrayList<Fault> getFaultPage(int currPage, int pageSize, Map<String, String> map) { Session session = null; String name = map.get("name"); Query query = null; if (name == null) { // 无条件查询 session = sessionFactory.openSession(); String hql = "from Fault f where f.statue=:statue"; query = session.createQuery(hql); query.setParameter("statue", "待维修"); } else { session = sessionFactory.openSession(); String hql = "from Fault f where (f.devices.typeclass=:name or " + "f.devices.address=:name or f.devices.brandname=:name or " + "f.devices.buytime=:name or f.devices.classfiy=:name or " + "f.devices.idnum=:name or f.devices.statue=:name or " + "f.applytime=:name) and f.statue=:statue"; query = session.createQuery(hql); query.setParameter("name", name); query.setParameter("statue", "待维修"); } int b = (currPage - 1) * pageSize; query.setFirstResult(b); query.setMaxResults(pageSize); ArrayList<Fault> list = (ArrayList<Fault>) query.list(); session.close(); return list; }