-
HQL對關鍵字大小寫不敏感
查看全部 -
HQL語句面向對象的查詢語句,面向持久化對象和屬性,大小寫敏感
查看全部 -
使用order by子句對查詢結果進行排序
升序 asc
降序 desc
"from?Commodity?order?by?price?asc"
"from?Commodity?order?by?seller.id?asc,price?desc,name?asc"
有多個排序條件時,優先級依次降低
查看全部 -
使用Query的uniqueResult方法查詢結果是單個對象,但使用時必須確保,查詢結果是1個或0個。
查看全部 -
在where和select子句中可以使用四則運算 + ?- ?× ÷
查看全部 -
集合運算 set?
is [not] empty 集合[不]為空,不包含任何元素
member of 元素屬于集合
HQL 對應SQL empty exists member of in "from?Order?o?where?o.orderItems?is?not?empty"
查看全部 -
邏輯運算
and (與)、 or(或) 、 not(非)
查看全部 -
字符串模式匹配
like 關鍵字
通配符 %、_ ? ( %表示任意個字符 ?_表示任意一個字符?)
//匹配姓“張”,且名字總共只有2個字的 "from?Customer?c?where?c.name?like?'張_'"
//匹配“北京”,位置不固定 "from?Customer?c?where?c.address?like?'%北京%'"
查看全部 -
where子句中的范圍運算
[not] in ( 列表 )
[not] between 值1 ?and ?值2
查看全部 -
where子句中的比較運算符
=、<>、 <、 >、 >=、 <=
null值判斷: is [not] null ?或 <>null 、=null
查看全部 -
distinct關鍵字,去除查詢結果中多余的重復元素。
"select?distinct?c.sex?from?Customer?c"
查看全部 -
以自定義類型返回查詢結果:
1、在持久類中定義對應參數的構造方法
2、在select語句中使用構造方法
String?hql?=?"select?new?Seller(s.name?as?name,s.tel)?from?Seller?s"; Query?query?=?session.createQuery(hql); List<Seller>?sellers?=?query.list(); for?(Seller?s?:?sellers)?{ ????System.out.println(s); }
注意:此時仍然需要定義無參的構造函數,否則“from Seller”將會失敗。
查看全部 -
以Map形式返回查詢結果:new map(...)
Map的key是默認查詢語句中對應的位置信息,但是String類型。
可以通過別名的方式修改key。
String?hql?=?"select?new?map(s.name,s.tel)?from?Seller?s"; String?hql?=?"select?new?map(s.name?as?name,s.tel)?from?Seller?as?s"; Query?query?=?session.createQuery(hql); List<Map>?maps?=?query.list(); for?(Map?m?:?maps)?{ ????System.out.println(m.get("0")); ????//System.out.println(m.get("name"));//使用別名 ????ystem.out.println(m.get("1")); }
查看全部 -
?以List形式返回查詢結果 : new list(...)
String?hql?=?"select?new?list(s.name,s.tel)?from?Seller?s";
查詢結果:
List<List>?list?=?query.list();
查看全部 -
HQL查詢一個持久類中的部分字段:
String?hql?=?"select?s.name,s.tel?from?Seller?s";
此時,查詢結果為對象數組:
List<Object[]>?objs?=?query.list();
注意:當僅指定一個字段時,返回的是對象而不是對象數組。
查看全部
舉報