Hibernate中各種查詢方法的總結
Hibernate中各種查詢方法的總結:
1.使用HQL語句
Query q = session.createQuery("select e from com.sun.demo.Emp e");
2.使用Load方法(主鍵查詢)
Emp e = (Emp)session.load(Emp.class, 1141);
3.使用get方法(主鍵查詢)
Emp e = (Emp)session.get(Emp.class, 1141);
4.引數化查詢(使用?萬用字元,或者命令萬用字元)
Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename=?");
q.setParameter(0, "SMITH");
Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename like ?");
q.setParameter(0, "%M%");
Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename like :lkename");
q.setParameter("lkename", "%L%");
5.命名查詢
<query name="myquery">
<![CDATA[
from com.sun.hibernate.Employer where job = ?
]]>
</query>
Query q = session.getNamedQuery("myquery");
q.setParameter(0, "MANAGER");
6.屬性查詢
Query q = session.createQuery("select max(sal) from Employer e where sal is not null");
Query q = session.createQuery("select distinct job from Employer e"
7.例項化查詢
步驟如下:
1.編寫你的HQL語句
2.建立普通的Java類 -------------------與POJO類不同,它與資料庫沒有任何關係
3.在該java類中你需要建立和查詢結果對應的欄位
4.在該java類中,你需要建立合適的建構函式
5.完善你的HQL語句,使用例項化查詢的方式進行包裝
6.通過list.get(i)獲取的結果就不再是一個數組,而是一個包裝後的物件
例子:
Query q = session.createQuery("SELECT new com.sun.demo.UserDate(ename,SYSDATE) FROM Userinfo");
List list = q.list();
for(int i=0;i<list.size();i++){
UserDate u = (UserDate)list.get(i);
System.out.println(u.getEname());
}
8.多型查詢
對於pojo來說,java中的這種關係被擴充套件到了資料庫表中
hibernate在查詢一個表的同時,會檢查該表所對應的POJO類有沒有子類,如果有,一起查詢出來
9.分頁查詢
//查詢第三到五條
q.setFirstResult(3);//從第三條開始
q.setMaxResults(3);//提取三條
10.uniqueResult方法查詢(查詢結果只能是一個欄位)
Query q = session.createQuery("select count(*) from Employer");
Long count = (Long)q.uniqueResult();
11.Criteria查詢(通過面向物件化的設計,將資料查詢條件封裝為一個物件)
Criteria c = session.createCriteria(Employer.class);
c.addOrder(Order.asc("sal"));//按薪水升序查詢
c.setFirstResult(3);
c.setMaxResults(3);
List list = c.list();
for(int i=0;i<list.size();i++){
Employer emp = (Employer)list.get(i);
System.out.println(emp.getEname() + " : " + emp.getSal());
}