Hibernate分頁查詢代碼:
Query query = getSession().createSQLQuery(sql).addEntity("app", Application.class)
.addEntity("g", Gameversion.class);
query.setParameter(0, id);
query.setParameter(1, ua);
query.setParameter(2, platform);
PageControl pc = PageThreadLocal.getPagination();
query.setMaxResults(pc.getPagesize());
query.setFirstResult((pc.getPageno() - 1) * pc.getPagesize());
List<Object[]> resultlist = query.list();
代碼基於sql查詢,
createSQLQuery(sql)
返回一個SQLQuery。
.addEntity("app", Application.class)
.addEntity("g", Gameversion.class);
表示查詢返回的結果是Application和Gameversion兩個對象組成的數組,"app"和"g"表示sql語句中對應表的別名。
PageControl pc = PageThreadLocal.getPagination();
這端代碼從ThreadLocal中獲取當前線程的PageControl對象。
最後通過調用:
query.setMaxResults(pc.getPagesize());
query.setFirstResult((pc.getPageno() - 1) * pc.getPagesize());
設置本次查詢的記錄範圍