1. 程式人生 > >Hibernate hql查詢

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)