dljd_048_hibernate_單表查詢_mysql分頁查詢
阿新 • • 發佈:2018-12-12
一、hibernate中實現mysql分頁查詢示例
package edu.aeon.hibernate.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import edu.aeon.aeonutils.hibernate.getsessionutil.GetSessionUtil; import edu.aeon.beans.Student; /** * [說明]:分頁查詢 *@author aeon * */ public class TestQueryByPage { @Test public void testHqlQueryByPage() { Transaction transaction=null; Session session=null; try { session = GetSessionUtil.getSession(); transaction=session.getTransaction(); transaction.begin();// 第一種動態引數賦值[start] String hql="from Student"; int pageNo=1;//第一頁 int pageSize=2;//每頁顯示兩條 int pageIndex=(pageNo-1)*pageSize; //根據傳進來的頁數和每頁顯示的記錄數計算出該頁的其實記錄 List<Student> stuList= session.createQuery(hql) .setFirstResult(pageIndex) .setMaxResults(pageSize) .list();//[/end] for (Student stu : stuList) { System.out.println(stu); } System.out.println("hql查詢!"); transaction.commit(); } catch (Exception e) { e.printStackTrace(); //事物的回滾操作 transaction.rollback(); }finally{ /* * 其實這種getCurrentSession獲取到的session我們無需手動關閉 * 因為當事務提交或者回滾的時候已經做了關閉session操作 * 而用openSession獲取到的session我們一定要用手動去關閉 * */ if(null!=session){ session.close(); } } } }
資料庫資料資訊截圖:
測試結果截圖(第一頁):
測試結果截圖(第二頁):
測試結果截圖(第三頁):
測試結果截圖(第四頁):
測試結果截圖(第五頁):
測試每頁顯示三條記錄的第四頁截圖如下: