Hibernate:Disjunction&Conjunction构造复杂的查询条件.
2024-09-06 17:03:32
Hibernate:Disjunction&Conjunction构造复杂的查询条件
Disjunction和Conjunction是逻辑或和逻辑与,如下:
用来组合一组逻辑或【or】条件的方法
1.Restrictions.disjunction();
用来组合一组逻辑与【and】条件的方法
2.Restrictions.conjunction();
实例一:构造复杂的SQL查询条件
private void CheckBsc_lj(Criteria queryCriteria)
{
Disjunction disjunction = Restrictions.disjunction();
Criterion cirterion = Restrictions.sqlRestriction("SIMULPORTCAPACITY<SIMULPORTCAPACITYOCUPIED".toLowerCase());
disjunction.add(cirterion);
cirterion = Restrictions.sqlRestriction("ADSLPORTCAPACITY<ADSLPORTCAPACITYOCCUPIED".toLowerCase());
disjunction.add(cirterion);
cirterion = Restrictions.sqlRestriction("LANPORTCAPACITY<LANPORTCAPACITYOCCUPIED".toLowerCase());
disjunction.add(cirterion); // ONU端口,至少要录入一种端口
Conjunction conjunction = Restrictions.conjunction();
cirterion = Restrictions.eq("lanportcapacity", 0);
conjunction.add(cirterion);
cirterion = Restrictions.eq("simulportcapacity", 0);
conjunction.add(cirterion);
cirterion = Restrictions.eq("adslportcapacity", 0);
conjunction.add(cirterion); disjunction.add(conjunction);
queryCriteria.add(disjunction);
} 构造出的条件如下:
select *
from aaaa this_
where (simulportcapacity < simulportcapacityocupied or
adslportcapacity < adslportcapacityoccupied or
lanportcapacity < lanportcapacityoccupied or
(this_.LANPORTCAPACITY = ? and this_.SIMULPORTCAPACITY = ? and
this_.ADSLPORTCAPACITY = ?))
实例二:构造模糊查询
Disjunction dis=Restrictions.disjunction();
dis.add(Restrictions.like("chanpin", "冰箱", MatchMode.ANYWHERE));
dis.add(Restrictions.like("chanpin", "洗衣机", MatchMode.ANYWHERE));
dis.add(Restrictions.like("chanpin", "热水器", MatchMode.ANYWHERE));
dis.add(Restrictions.like("chanpin", "空调", MatchMode.ANYWHERE));
detachedCriteria.add(dis);
版权声明:本文为博主原创文章,未经博主允许不得转载。
最新文章
- MFC像窗体坐标位置发送 点击消息
- CC1310之使用SMARTRF STUDIO
- ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
- 使用UDEV绑定ASM多路径磁盘
- HTTP POST GET 本质区别详解
- NodeJS+ExpressJS+SocketIO+MongoDB应用模板
- jsp当参数为空的时候默认显示值
- 原生js实现 常见的jquery的功能
- linux基础-安装篇
- 一个Web前端自学者的自述
- C++输出二进制文件和文本文件
- 使用sublime 正则匹配替换大批量代码
- MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?
- java工程添加类库
- 动手动脑java异常处理
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
- HBulider打包
- FindWindow 查找窗口
- Flask:文件配置方式实践及其中的各种问题记录
- 基于Landmark的人脸对齐以及裁剪方法