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);

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. MFC像窗体坐标位置发送 点击消息
  2. CC1310之使用SMARTRF STUDIO
  3. ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
  4. 使用UDEV绑定ASM多路径磁盘
  5. HTTP POST GET 本质区别详解
  6. NodeJS+ExpressJS+SocketIO+MongoDB应用模板
  7. jsp当参数为空的时候默认显示值
  8. 原生js实现 常见的jquery的功能
  9. linux基础-安装篇
  10. 一个Web前端自学者的自述
  11. C++输出二进制文件和文本文件
  12. 使用sublime 正则匹配替换大批量代码
  13. MFC中添加了一个dialog,并创建了相应的类,初始化函数没有怎么办?
  14. java工程添加类库
  15. 动手动脑java异常处理
  16. hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
  17. HBulider打包
  18. FindWindow 查找窗口
  19. Flask:文件配置方式实践及其中的各种问题记录
  20. 基于Landmark的人脸对齐以及裁剪方法

热门文章

  1. tabbar
  2. 【旧文章搬运】为什么win32k.sys在System进程空间无法访问
  3. Oauth2的遇坑一点提示(Spring Security Oauth2 / Cloud)
  4. Linux : linux命令之 svn
  5. C - Present
  6. 微信小程序中时间戳和日期的相互转换
  7. 进击python第4篇:初探模块
  8. idea svn 问题
  9. dream(2018.10.17)
  10. [模板](luogu P3387)縮點