Hibernate:Disjunction&Conjunction构造复杂的查询条件.
2015-10-06 15:49
441 查看
Hibernate:Disjunction&Conjunction构造复杂的查询条件
Disjunction和Conjunction是逻辑或和逻辑与,如下:
用来组合一组逻辑或【or】条件的方法
用来组合一组逻辑与【and】条件的方法
实例一:构造复杂的SQL查询条件
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);
相关文章推荐
- Java字符串详解
- 推荐几本书(.net)
- Hibernate 调用原生态Sql语句和存储过程
- UVA_10391: Compound Words
- SQL*LOADER
- LeetCode 071 Simplify Path
- 大数据之数据挖掘理论笔记 聚类问题之K-means
- 被锁 和解锁
- 【002】有符号数据传递给无符号变量
- 带GPG签名的Git tag
- [LeetCode-169] Majority Element(找出数组中超过一半元素)
- 常规load方式
- oracle9
- iOS UITableView
- Linux块设备驱动之内存模拟块设备
- 获取app的主窗口,返回主视图界面
- mybatis解决字段名与实体类属性名不相同的冲突
- 一个Go推送服务器集群:gopush-cluster
- jquery 实现回到顶部
- Linux command 汇总(未完待续)