日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate的HQL查询语句

發布時間:2024/3/24 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate的HQL查询语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、標準查詢Criteria (主要應用于簡單的查詢)

Session session=HibernateSessionFactory.getSession();Query query=null;Criteria criteria=session.createCriteria(Orders.class);criteria.addOrder(Order.desc("orderDate"));//按照日期字段進行升序排序List<Orders> lsod=criteria.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}

2、HQL查詢根據指定條件查詢
注意:
所有HQL語句查詢的都是實體類名,而不是表名,所有的條件都是對象的屬性,而不是字段。
eg:from Orders where orderMode=? and orderTotal>?
Orders 為表映射的實體對象
orderMode、orderTotal為Orders 的屬性

// 查詢訂單信息,條件為訂購模式為direct,訂單金額大于10000元的訂單信息String hql="from Orders where orderMode=? and orderTotal>? order by orderTotal";query=session.createQuery(hql);//設置查詢參數query.setParameter(0, "direct"); //0表示第一個“?”query.setParameter(1, 10000.00); //1表示第二個“?”List<Orders> lsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}

3、hql–模糊查詢

//查詢產品信息中產品名稱包含HD的所有產品信息String hql="from ProductInformation where productName like ?";query=session.createQuery(hql);query.setParameter(0, "%HD%");List<ProductInformation> lspd=query.list();for (ProductInformation pd : lspd) {System.out.println("產品編號:"+pd.getProductId());System.out.println("============================");}

4、范圍查詢—between查詢

//查詢價格在100-200之間的產品信息String hql="from ProductInformation where listPrice between 100 and 200";query=session.createQuery(hql);List<ProductInformation> lspd=query.list();for (ProductInformation pd : lspd) {System.out.println("產品編號:"+pd.getProductId());System.out.println("============================");}

5、范圍查詢–in查詢

```//查詢國籍是CHINA\GERMANY\JAPAN的客戶信息String hql="from Customers where nlsTerritory in (?,?,?)";query=session.createQuery(hql);query.setParameter(0, "CHINA");query.setParameter(1, "GERMANY");query.setParameter(2, "JAPAN");List<Customers> lscs=query.list();for (Customers cs : lscs) {System.out.println("客戶編號:"+cs.getCustomerId());System.out.println("================================");}```

6、查詢指定屬性的值

//只查詢訂單的編號、日期、金額和客戶信息/* 查詢返回的List集合,集合元素為對象數組,數組長度為選擇屬性的個數* 注意:當屬行為對象類型,則放置在其他選擇屬性的最后*/String hql="select orderId,orderDate,orderTotal,customers from Orders";query=session.createQuery(hql);List<Object[]> lsobs=query.list();for (Object[] obs : lsobs) {System.out.println("訂單編號:"+obs[0].toString());System.out.println("訂單日期:"+obs[1].toString());System.out.println("訂單客戶:"+((Customers)obs[3]).getCustFirstName()); //訂單實體的屬性為客戶實體System.out.println("訂單金額:"+obs[2].toString());System.out.println("=====================================");}

7、查詢前n條記錄

//查詢訂單金額最高的前5條記錄String hql="from Orders order by orderTotal desc";query=session.createQuery(hql);//只獲取前5條記錄query.setFirstResult(0);query.setMaxResults(5);List<Orders> lsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}

8、分頁查詢

//按照每頁5條記錄查詢訂單表的數據String hql="from Orders where 1=1 order by orderId";query=session.createQuery(hql);//如果存在查詢條件,則先設置查詢參數值,再分頁System.out.println("================第1頁=============");query.setFirstResult(0);//0=(page-1)*rowsquery.setMaxResults(5);//5=rowsList<Orders> lsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}System.out.println("=====================================");//如果存在查詢條件,則先設置查詢參數值,再分頁System.out.println("================第2頁=============");query.setFirstResult(5);//0=(page-1)*rowsquery.setMaxResults(5);//5=rowslsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}System.out.println("=====================================");

9、聚合函數count、max、min、avg、sum

String hql="select min(orderTotal),max(orderTotal) from Orders";query=session.createQuery(hql);Object[] obs=(Object[]) query.uniqueResult();System.out.println("最低金額:"+obs[0].toString());System.out.println("最高金額:"+obs[1].toString());//獲取訂單的總記錄數hql="select count(o) from Orders o"; //將實體Orders 別名為 o 等價于 hql="select count(*) from Orders "; query=session.createQuery(hql);Object ob=query.uniqueResult();System.out.println("總記錄數:"+ob.toString());

10、分組統計查詢group by

//統計每個客戶的訂單金額String hql="select customers.custFirstName,sum(orderTotal) from Orders " +" where 1=1 group by customers.custFirstName";query=session.createQuery(hql);List<Object[]> lsob=query.list();for (Object[] obs : lsob) {System.out.println("客戶姓名:"+obs[0].toString());System.out.println("訂單總金額:"+obs[1].toString());System.out.println("========================");}*/

11、子查詢

* 查詢價格最低的產品信息* String hql="from ProductInformation where listPrice =(select min(listPrice) from ProductInformation)";query=session.createQuery(hql);List<ProductInformation> lspd=query.list();for (ProductInformation pd : lspd) {System.out.println("產品編號:"+pd.getProductId());System.out.println("============================");}

12、外連接

/* 主要以主表對象屬性的位置確定連接的方式,右外連接為主* 查詢所有的客戶信息和客戶對應的訂單信息,如果客戶無訂單信息則顯示未購買!* String hql="select o,c from Orders o right join o.customers c";query=session.createQuery(hql);List<Object[]> lsobs=query.list();for (Object[] obs : lsobs) {Orders od=(Orders) obs[0];Customers cs=(Customers) obs[1];System.out.println("客戶姓名:"+cs.getCustFirstName()+"."+cs.getCustLastName());if(od!=null){System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}else{System.out.println("未購買商品");}System.out.println("==============================================================");}

13、原生的sql查詢,按照表明查詢

String sql="select * from oe.orders";SQLQuery sqlQuery=session.createSQLQuery(sql);sqlQuery.addEntity(Orders.class);List<Orders> lsod=sqlQuery.list();for (Orders od : lsod) {System.out.println("訂單編號:"+od.getOrderId());System.out.println("==================");}

總結

以上是生活随笔為你收集整理的hibernate的HQL查询语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。