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);
本文介绍如何使用Hibernate的Disjunction和Conjunction方法来构建复杂的查询条件,包括构造SQL查询条件及模糊查询的应用。
3625

被折叠的 条评论
为什么被折叠?



