Hibernate hql查询

来源:互联网 发布:php 处理图片 编辑:程序博客网 时间:2024/06/05 21:50

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)
0 0
原创粉丝点击