hibernate hql語句 投影查詢的三種方式


投影查詢有三種方式:

1.直接查
2.查詢返回對象
3.查詢返回Map鍵值對
 
=======================================================
//投影查詢方法1:直接使用select 屬性  from 類名的方式查詢
public void list1(){
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
//開啟事務
Transaction tx = session.beginTransaction();
Query query = session.createQuery("select name,title from Guestbook");
List<Object[]> list = query.list();
for(Object[] o:list){
System.out.println("姓名:"+o[0]);
}
tx.commit();
}
 
/*
 * 投影查詢方法2  ---   使用select new 類名(屬性名...) from 類名的方式,返回實體類
 * 注意:如何使用實體類的方式,那么必須在實體類中有這樣的構造方法
 */
public void list2(){
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
//開啟事務
Transaction tx = session.beginTransaction();
Query query = session.createQuery("select new Guestbook(id,name,title) from Guestbook");
List<Guestbook> list = query.list();
for(Guestbook gb:list){
System.out.println("編號:"+gb.getId()+",姓名:"+gb.getName()+",標題:"+gb.getTitle());
}
tx.commit();
}
 
 
/*
 * 投影查詢方法3  ---   使用select new Map(屬性名...) from 類名的方式,返回Map集合,通過下標獲取屬性值
 * 注意:如何使用實體類的方式,那么必須在實體類中有這樣的構造方法
 */
public void list3(){
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
//開啟事務
Transaction tx = session.beginTransaction();
//在遍歷Map是就可以根據編號獲取屬性值
//Query query = session.createQuery("select new Map(id,name,title) from Guestbook");
//使用屬性的別名,在遍歷Map是就可以根據名稱獲取屬性值
Query query = session.createQuery("select new Map(gb.id as id,gb.name as name,gb.title as title) from Guestbook gb");
List<Map> list = query.list();
for(Map m:list){
//注意:這里的編號不是Integer類型,而是String類型
System.out.println("編號:"+m.get("id")+",姓名:"+m.get("name")+",標題:"+m.get("title"));
}
tx.commit();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM