版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
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)不区分大小写: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、逻辑运算
待续!