Eva
Java粉絲募集中
  • 簡介
  • 我們的優勢
  • 最新消息
  • 下載與使用
  • 範例與說明
    • Eva Objects >
      • Bean類別定義
      • Entity型別定義
      • Struct型別定義
      • 建立Entity空白物件
      • 建立Entity修改物件
      • 建立Entity條件物件
      • 建立Struct值物件
    • Eva_ORM >
      • ORM程式主體
      • 使用條件物件執行操作
      • 執行更複雜條件的操作.
      • 分頁取回資料
      • 操作JDBC的參數
      • Array Property的操作
      • Collection Property的操作
      • 更複雜的Collection Property
      • 指定表格名稱
      • 新增資料庫Dialect
    • Eva_IOC >
      • IOC程式主體
      • AOP應用
    • Eva_Struct >
      • Struct範例
      • Bit Strcut範例
      • 指標範例
      • 於Eva_ORM中使用
    • Eva_Sort >
      • 依指定Properties排序
      • 部份排序
      • 優先排序部份
    • Eva_Cache >
      • hashing-based cache
      • 非hashing-based cache
  • API列表
  • 技術支援
    • 協助開發
  • 相關書籍

建立Entity條件物件.

若資料表己事先存在, 則最簡單地建立一個條件物件的方法就如同下面的例子: 在下面 newCondition1 方法中, 我們先去建立一個 ORMappers 物件, 再呼叫它的 newCondition 方法去得到一個ConditionObj<A>型別的查詢物件 a, 範例中接著為 a 設定條件, 令其 id1 屬性值介於 5 與 10 之間, 或是 id1 的屬性值為 20. 這個條件物件可用於稍後的資料庫或 Cache 查詢, 修改, 刪除操作. 

ConditionObj 型別的條件物件, 透過它的 If 方法與 OP 型別參數的配合, 能讓使用者設定各式條件. 每次透過 If 方法所設定的不同條件, 它們之間是 'AND' 這種必須同時滿足的關係, 若使用者呼叫了 Or 方法, 則會重新開始一個以 'OR' 關係的新條件. 使用者將子條件以 Or 方法隔開, 意味著要求其中至少一個子條件被滿足. 除此之外, 還需注意 ConditionObj 物件目前還沒有方法可以讓使用者在條件中呼叫其它自訂或非自訂的函數, 但這己是 SQL 語法有提供的功能. 

在下面 newCondition2 方法中, 我們同樣建立了一個條件物件, 也設定了與 newCondition1 設定的同樣條件, 只是該設定的動作是透過文字條件與 ConditionObjUtil 的 setCondition 方法進行, 這種方式的效率比較慢, 也同樣需配合 ConditionObj 的限制, 不能在其文字條件中呼叫其它自訂或非自訂的函數, 但卻可以簡單地設定一些結構複雜的條件. 
package entities;

import com.logntw.eva.bean.condition.ConditionObj;
import com.logntw.eva.bean.condition.ConditionObjUtil;
import com.logntw.eva.condition.OP;
import com.logntw.eva.orm.DBConnectionProvider;
import com.logntw.eva.orm.ORMappers;
import com.logntw.eva.orm.defo.DefoORMappers;
import com.logntw.eva.orm.defo.conn.HSQLDB_1_8ConnectionProvider;

public class NewCondition
{
  public void newCondition1() throws Exception 
  {
    DBConnectionProvider provider = new HSQLDB_1_8ConnectionProvider("databaseName");    
    ORMappers mappers = DefoORMappers.getInstance(provider);    
          
    ConditionObj<A> a = mappers.newCondition(A.class);
    a.If(OP.GREATER).setId1(5);
    a.If(OP.LESS).setId1(10);
    a.Or();
    a.If(OP.EQUAL).setId1(20);
  }
  
  public void newCondition2() throws Exception 
  {
    DBConnectionProvider provider = new HSQLDB_1_8ConnectionProvider("databaseName");    
    ORMappers mappers = DefoORMappers.getInstance(provider);    
          
    ConditionObj<A> a = mappers.newCondition(A.class);
    ConditionObjUtil.setCondition(a, "(id1 > ? AND id1 < ?) OR id1 = ?", 5, 10, 20);
  }
}
www.facebook.com/java.tw