hibernate的HQL查询语句
生活随笔
收集整理的這篇文章主要介紹了
hibernate的HQL查询语句
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、標(biāo)準(zhǔn)查詢Criteria (主要應(yīng)用于簡(jiǎn)單的查詢)
Session session=HibernateSessionFactory.getSession();Query query=null;Criteria criteria=session.createCriteria(Orders.class);criteria.addOrder(Order.desc("orderDate"));//按照日期字段進(jìn)行升序排序List<Orders> lsod=criteria.list();for (Orders od : lsod) {System.out.println("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}2、HQL查詢根據(jù)指定條件查詢
注意:
所有HQL語(yǔ)句查詢的都是實(shí)體類名,而不是表名,所有的條件都是對(duì)象的屬性,而不是字段。
eg:from Orders where orderMode=? and orderTotal>?
Orders 為表映射的實(shí)體對(duì)象
orderMode、orderTotal為Orders 的屬性
3、hql–模糊查詢
//查詢產(chǎn)品信息中產(chǎn)品名稱包含HD的所有產(chǎn)品信息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("產(chǎn)品編號(hào):"+pd.getProductId());System.out.println("============================");}4、范圍查詢—between查詢
//查詢價(jià)格在100-200之間的產(chǎn)品信息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("產(chǎn)品編號(hào):"+pd.getProductId());System.out.println("============================");}5、范圍查詢–in查詢
```//查詢國(guó)籍是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("客戶編號(hào):"+cs.getCustomerId());System.out.println("================================");}```6、查詢指定屬性的值
//只查詢訂單的編號(hào)、日期、金額和客戶信息/* 查詢返回的List集合,集合元素為對(duì)象數(shù)組,數(shù)組長(zhǎng)度為選擇屬性的個(gè)數(shù)* 注意:當(dāng)屬行為對(duì)象類型,則放置在其他選擇屬性的最后*/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("訂單編號(hào):"+obs[0].toString());System.out.println("訂單日期:"+obs[1].toString());System.out.println("訂單客戶:"+((Customers)obs[3]).getCustFirstName()); //訂單實(shí)體的屬性為客戶實(shí)體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("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}8、分頁(yè)查詢
//按照每頁(yè)5條記錄查詢訂單表的數(shù)據(jù)String hql="from Orders where 1=1 order by orderId";query=session.createQuery(hql);//如果存在查詢條件,則先設(shè)置查詢參數(shù)值,再分頁(yè)System.out.println("================第1頁(yè)=============");query.setFirstResult(0);//0=(page-1)*rowsquery.setMaxResults(5);//5=rowsList<Orders> lsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}System.out.println("=====================================");//如果存在查詢條件,則先設(shè)置查詢參數(shù)值,再分頁(yè)System.out.println("================第2頁(yè)=============");query.setFirstResult(5);//0=(page-1)*rowsquery.setMaxResults(5);//5=rowslsod=query.list();for (Orders od : lsod) {System.out.println("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}System.out.println("=====================================");9、聚合函數(shù)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());//獲取訂單的總記錄數(shù)hql="select count(o) from Orders o"; //將實(shí)體Orders 別名為 o 等價(jià)于 hql="select count(*) from Orders "; query=session.createQuery(hql);Object ob=query.uniqueResult();System.out.println("總記錄數(shù):"+ob.toString());10、分組統(tǒng)計(jì)查詢group by
//統(tǒng)計(jì)每個(gè)客戶的訂單金額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、子查詢
* 查詢價(jià)格最低的產(chǎn)品信息* 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("產(chǎn)品編號(hào):"+pd.getProductId());System.out.println("============================");}12、外連接
/* 主要以主表對(duì)象屬性的位置確定連接的方式,右外連接為主* 查詢所有的客戶信息和客戶對(duì)應(yīng)的訂單信息,如果客戶無訂單信息則顯示未購(gòu)買!* 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("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}else{System.out.println("未購(gòu)買商品");}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("訂單編號(hào):"+od.getOrderId());System.out.println("==================");}總結(jié)
以上是生活随笔為你收集整理的hibernate的HQL查询语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google黑客常用搜索语句(新增)
- 下一篇: PhotoSwipe添加caption