Hibernate的检索方式(二)

转自:http://aumy2008.blogbus.com/logs/13887948.html

 

二.设定查询条件

       where子句中给出的是对象的属性名,而不是字段名。

HQLQBC支持的各种运算

运算类型

HQL运算符

QBC运算符

含义

比较运算

=

Expression.eq()

等于

<> 

Expression.not(Expression.eq())

不等于

Expression.gt()

大于

>=

Expression.ge()

大于等于

Expression.lt()

小于

<=

Expression.le()

小于等于

is null

Expression.isNull()

等于空值

is not null

Expression.isNotNull()

非空值

范围运算

in (列表)

Expression.in()

等于列表中的某一个值

not in (列表)

Expression.not(Expression.in())

不等于列表中的任意一个值

between 1 and 2

Expression.between()

大于等于值1并且小于等于值2

not between 1 and 2

Expression.not(Expression.between())

小于值1或者大于值2

字符串模式匹配

like

Expression.like()

字符串模式匹配

逻辑运算

and

Expression.add()或者Expression.conjunction()

逻辑与

or

Expression.or()或者Expression.disjunction()

逻辑或

not

Expression.not()

逻辑非

 1、比较运算

1)不区分大小写:HQL使用lower()或者 upper()来实现(如:”…lower(c.name)=’tom’”);

                              QBC使用.ignoreCase()来实现(如:Expression.eq(“”,””) .ignoreCase())。

注:在HQL中,可以调用SQL函数。lower()转小写,upper()转大写。

       QBC不支持直接调用SQL函数。

 

2HQL查询支持数学运算表达式,而QBC不支持。

 

2、范围运算

HQL中的in示例: c.name in (‘aa’,’bb’)

QBC中的in示例: String[] names={‘aa’,’bb’}; Expression.in(‘name’,names); 

 

3、字符串模式匹配

HQLQBC通用:字符串模式中的通配符

通配符名称

通配符

作用

百分号

%

匹配任意类型且任意长度(长度可以为0)的字符串,如果是中文,需要两个百分号,即“%%

下划线

_

匹配单个任意字符,常用来限制字符串表达式的长度

 

QBCMatchMode类包含的各个静态常量实例

匹配模式

举例

MatchMode.START

Expression.like(“name”,”y”, MatchMode.START)

姓名以y开头

MatchMode.END

Expression.like(“name”,”y”, MatchMode. END)

姓名以y结尾

MatchMode.ANYWHERE

Expression.like(“name”,”y”, MatchMode. ANYWHERE)

姓名中包含y

MatchMode.EXACT

Expression.like(“name”,”y”, MatchMode. EXACT)

精确匹配,姓名必须为y

 

4、逻辑运算

你可能感兴趣的:(Hibernate)