QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions,Expresss類組成
比較運算符
HQL運算符 QBC運算符 含義
= Restrictions.eq() 等於
<> Restrictions.not(Exprission.eq()) 不等於
> Restrictions.gt() 大於
>= Restrictions.ge() 大於等於
< Restrictions.lt() 小於
<= Restrictions.le() 小於等於
is null Restrictions.isnull() 等於空值
is not null Restrictions.isNotNull() 非空值
like Restrictions.like() 字符串模式匹配
and Restrictions.and() 邏輯與
and Restrictions.conjunction() 邏輯與
or Restrictions.or() 邏輯或
or Restrictions.disjunction() 邏輯或
not Restrictions.not() 邏輯非
in(列表) Restrictions.in() 等於列表中的某一個值
ont in(列表) Restrictions.not(Restrictions.in())不等於列表中任意一個值
between x and y Restrictions.between() 閉區間xy中的任意值
not between x and y Restrictions.not(Restrictions..between()) 小於值X或者大於值y
1、簡單查詢
//+收貨單
ICriteria iReceivingCriteria = session.CreateCriteria(typeof(IEIReceivingContent));
iReceivingCriteria.Add(Expression.Eq("InvoiceStatus", 3));
iStockCriteria.Add(Expression.Like("OrgId", criteria.OrgId));
2、時間段查詢
iReceivingCriteria.Add(Restrictions.Between("BusinessDate", criteria.BeginDate, criteria.EndDate));
3、HQL 使用 多條件查詢
3.1 同一個輸入數值 匹配兩個字段
list = DeliveryDao.CurrentSession.CreateCriteria(typeof(Delivery))
.Add
(
NHibernate.Criterion.Restrictions.Or
(
NHibernate.Criterion.Restrictions.Like("Id", "%" + idOrNo + "%"),
NHibernate.Criterion.Restrictions.Like("DeliveryNbr", "%" + idOrNo + "%")
)
)
3.2 兩個以上or 的實現方法 利用Disjunction方法可以實現
crit.Add(Expression.Disjunction()
.Add(Expression.Eq("order_state", 1))
.Add(Expression.Eq("order_state", 2))
.Add(Expression.Eq("order_state", 0))
);
3.3 多個字段不同的值
NHibernate.ICriteria criteria = StorageBalanceDao.CurrentSession.CreateCriteria(typeof(StorageBalance));
criteria.Add(
NHibernate.Criterion.Expression.Disjunction()
.Add(NHibernate.Criterion.Restrictions.Eq("property_1", "value_1"))
.Add(NHibernate.Criterion.Restrictions.Eq("property_2", "value_2"))
.Add(NHibernate.Criterion.Restrictions.Eq("property_3", "value_3"))
);