Hibernate hql查詢
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
Hibernate
HQL
查詢
介紹和基本語法
HQL
大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Query
query=session.createQuery("from
Cat
c");
List<Cat>
catlist=query.list();
返回單個物件
Query
q=session.
createQuery("select
count(c)
from
Cat
c");
Number
num=(Number)q.uniqueResult();
//返回單個例項
int
count=num.intValue();
//返回數值
查詢總數時,HQL
格式必須為以上語句格式
,返回值可能為
Short
Integer
Long
BigInteger
具體由主鍵的型別而定
返回
Object[]陣列
List<Object[]>
list=session.createQuery
("select
c.name,c.mother
from
Cat
c").list();
//獲取
for(Object[]
row
:
list){
for(Object
obj
:
row){
System.out.println(obj);
}
}
返回
List
型別
String
hql="select
new
List(c.name,c.mother)
from
Cat
c"'
List<List>
list=session.cresteQuery(hql).list();
//獲取
For(List
row
:
list){
For(Object
obj
:
row){
System.out.println(obj);
}
}
返回
Map
型別
String
hql="sesect
new
map(c.name
as
name,c.mother
as
mother)
"
+
"from
Cat
c"
;
List
listMap=session.creatgQuery(hql).list();
//獲取
for(Map
map
:
(List<Map>
listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
HibernateHQL查詢介紹和基本語法
HQL大小寫不敏感,當有相同的實體類名時,使用包名.實體類
Queryquery=session.createQuery("fromCatc");
List<Cat>catlist=query.list();
返回單個物件
Queryq=session.createQuery("selectcount(c)fromCatc");
Numbernum=(Number)q.uniqueResult();//返回單個例項
intcount=num.intValue();//返回數值
查詢總數時,HQL格式必須為以上語句格式,返回值可能為
Short Integer Long BigInteger具體由主鍵的型別而定
返回Object[]陣列
List<Object[]>list=session.createQuery ("selectc.name,c.motherfromCatc").list();
//獲取
for(Object[]row:list)
{
for(Objectobj:row){
System.out.println(obj);
}
} 返回List型別
Stringhql="select new List(c.name,c.mother) from Cat c";
List<List>list=session.cresteQuery(hql).list();//獲取
For(Listrow:list){
For(Objectobj:row){
System.out.println(obj);
}
}
返回Map型別
Stringhql="sesect new map(c.nameasname,c.mother as mother)"+"fromCat c";
ListlistMap=session.creatgQuery(hql).list();
//獲取
for(Map map:(List<Map>listMap){
System.out.println("Name:"+map.get("name"));
System.out.println("Mother:"+map.get("mother"));
}
返回實體物件
String hql="select new Cat(cat.name,cat.createDate) from Cat c";
List<Cat> catList=session.createQuery(hql).list();
注意:
這樣使用時,Cat類中必須存在一個public Cat(Stringname,DatecreateDate)的構造方法。
因為Hibernate是通過呼叫該構造方法完成返回值從Object[]陣列轉化到Cat類實體類的。
條件查詢和運算子
Where子句的語法
Stringhql="select c from Cat c"+"where c.mother.name=null and c.createDate<:createDate"; session.createQuery(hql).setParameter("createDate",newDate()).list();
表示式setParameter()傳遞引數 HQL支援的運算子
數學運算子:+ - * /
比較操作符:= != <<= >>= like
邏輯計演算法:andornot
SQL操作符:in、notin、between、is null、is not null is empty、number of
字串連線:||或concat("","")
時間日期函式:current_date() current_time() current_timestamp() Second() minute() hour() day() month() year()
JPA定義的操作:substring() coalesce() lower() upper() lenth() Locate() abs() sqrt() bit_lenth() null if() trim()
資料庫支援的SQL標量函式:sign() trunc() rtrim() sin()
簡單的跳轉語句:case...when...then...else...end
語法:看高階查詢,設定查詢條件時,應儘量使用setParameter()傳遞引數。 統計函式
Stringhql="select count(c) from Cat c where c.mother!=null";
Number num=(Number)session.createQuery(hql).uniqueResult();
intcount=num.intValue();//同返回單個物件
HQL分頁顯示 Stringhql="select count(c) from Cat c";
Longcount=(Long)session.createQuery(hql).uniqueResult();//查詢記錄總數
List<Cat>ccList=session.createQuery("fromCat") .setFirstResult(0)//從第0條開始
.setMaxResults(10).list();//取10條資料
HQL連表查詢
Stringhql="select e from Event e wheree.cat.name='Ketty'";
List<Event>eventList=sessionQuery(hql).list();Where子句用到了Car表
Stringhql="select c from Cat c left join c.event se where e.description like:str"; List<Cat>list=session.createQuery(hql).setParameter("str","%dd%").list();
使用SQL資料庫 Hql為jdbc格式
String hql = "select * from tb_cat";
SQLQuery sqlquery=session.createSQLQuery(hql);
sqlquery.addEntity(Cat.class);//設定輸出型別
List<Cat>catList=sqlquery.list();
命名常用的查詢
實體類中@註解配置,使用直接引用名字。
@NamedQuery(name="cat",query="selectcfromCatc")
@NamedNativeQuery(name="cat",query="select*fromtb_cat)