您的位置:首页 > 其它

Hibernate的检索方式(二)【转】

2009-04-18 17:51 316 查看

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://aumy2008.blogbus.com/logs/13887948.html

二.设定查询条件

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

HQL和QBC支持的各种运算

运算类型

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函数。

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

2、范围运算

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

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

3、字符串模式匹配

HQL和QBC通用:字符串模式中的通配符

通配符名称

通配符

作用

百分号

%

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

下划线

_

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

QBC:MatchMode类包含的各个静态常量实例

匹配模式

举例

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、逻辑运算

待续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: