NHibernate(1) HQL 條件查詢(QBC) - 條件限制



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


 


 

 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM