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列表
  • 技術支援
    • 協助開發
  • 相關書籍

使用條件物件執行操作.

透過ORMapper介面, Eva_ORM可建立三種物件 : 
  1. 透過newObject()方法可建立空白的物件, 可用於新增或刪除資料.
  2. 透過newModification()方法, 或複製查詢的結果, 可得到用於修改的物件, 可用它們修改現有的資料.
  3. 透過newConditionObj()方法可得到條件物件, 可用它們建立操作的條件.

查詢的物件為一個屬於ConditionObj<T>型別的物件, 使用者可以以呼叫其下的If()方法來一步一步地建立查詢條件, 或是透過ConditionObjUtil類別來以查詢的字串來加入查詢條件. 需額外注意的是, 在查詢的字串內, 目前仍不能支援資料庫方法的呼叫, 只能使用簡單的條件式. 除此之外, 使用查詢物件有一個特別的好處是, 它還可以直接用於Eva_Cache內的查詢.
package com.logntw.eva.orm.defo;

import java.util.List;

import junit.framework.Assert;

import org.junit.Test;

import com.logntw.eva.anno.orm.Entity;
import com.logntw.eva.anno.orm.Id;
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.EagerToGet;
import com.logntw.eva.orm.ORMappers;
import com.logntw.eva.orm.defo.conn.HSQLDB_1_8ConnectionProvider;

public class DefoORMappersTesth
{
  @Entity
  public static interface X
  {  
    @Id
    int getId1();
    void setId1(int id1);
    
    Y getData2();
    void setData2(Y data2);
    
    Y getData3();
    void setData3(Y data3);
    
  }
  
  @Entity
  public static interface Y
  {  
    @Id
    int getId4();
    void setId4(int id4);
    
    Z getData5();
    void setData5(Z data5);
  }
  
  @Entity
  public static interface Z
  {  
    @Id
    int getId6();
    void setId6(int id6);
    
    float getData7();
    void setData7(float data7);
  }
  
  @Test
  public void testDefoORMappersTesth2() throws Exception
  {  
    DBConnectionProvider provider = new HSQLDB_1_8ConnectionProvider("DefoORMappersTesth");    
    ORMappers mappers = DefoORMappers.getInstance(provider);
    
    DefaultTableCreator.create(mappers, Z.class);
    DefaultTableCreator.create(mappers, Y.class);
    DefaultTableCreator.create(mappers, X.class);
    
    mappers.open();
    
    try
    {        
      Z za = mappers.newObject(Z.class);
      za.setId6(11);
      Z zb = mappers.newObject(Z.class);
      zb.setId6(10);
      Z zc = mappers.newObject(Z.class);
      zc.setId6(9);
      Z zd = mappers.newObject(Z.class);
      zd.setId6(8);
      Z ze = mappers.newObject(Z.class);
      ze.setId6(7);
      Z zf = mappers.newObject(Z.class);
      zf.setId6(6);
      Z zg = mappers.newObject(Z.class);
      zg.setId6(5);
      Z zh = mappers.newObject(Z.class);
      zh.setId6(4);
      Z zi = mappers.newObject(Z.class);
      zi.setId6(3);
      Z zj = mappers.newObject(Z.class);
      zj.setId6(2);
      Z zk = mappers.newObject(Z.class);
      zk.setId6(1);
      
      
      Y ya = mappers.newObject(Y.class);
      Y yb = mappers.newObject(Y.class);
      Y yc = mappers.newObject(Y.class);
      Y yd = mappers.newObject(Y.class);
      Y ye = mappers.newObject(Y.class);
      Y yf = mappers.newObject(Y.class);
      Y yg = mappers.newObject(Y.class);
      Y yh = mappers.newObject(Y.class);
      Y yi = mappers.newObject(Y.class);
      Y yj = mappers.newObject(Y.class);
      Y yk = mappers.newObject(Y.class);
      
      ya.setId4(11);
      ya.setData5(za);
      yb.setId4(12);
      yb.setData5(zb);
      yc.setId4(13);
      yc.setData5(zc);
      yd.setId4(14);
      yd.setData5(zd);
      ye.setId4(15);
      ye.setData5(ze);
      yf.setId4(16);
      yf.setData5(zf);
      yg.setId4(17);
      yg.setData5(zg);
      yh.setId4(18);
      yh.setData5(zh);
      yi.setId4(19);
      yi.setData5(zi);
      yj.setId4(20);
      yj.setData5(zj);
      yk.setId4(21);
      yk.setData5(zk);
      
      X xa = mappers.newObject(X.class);
      X xb = mappers.newObject(X.class);
      X xc = mappers.newObject(X.class);
      X xd = mappers.newObject(X.class);
      X xe = mappers.newObject(X.class);
      X xf = mappers.newObject(X.class);      

      xa.setId1(51);
      xa.setData2(ya); // < 10
      xa.setData3(yb); // > 5
      xb.setId1(52);
      xb.setData2(yc);
      xb.setData3(yd);
      xc.setId1(53);
      xc.setData2(ye);
      xc.setData3(yf);
      xd.setId1(54);
      xd.setData2(yg);
      xd.setData3(yh);
      xe.setId1(55);
      xe.setData2(yi);
      xe.setData3(yj);
      xf.setId1(56);
      xf.setData2(yk); // 1!
      xf.setData3(ya); // 11! also fit!!!
      
      
      mappers.insert(new Object[]{za, zb, zc, zd, ze, zf, zg, zh, zi, zj, zk}, 1);
      mappers.rollback();
      mappers.insert(new Object[]{za, zb, zc, zd, ze, zf, zg, zh, zi, zj, zk}, 2); // no error.
      mappers.insert(new Object[]{ya, yb, yc, yd, ye, yf, yg, yh, yi, yj, yk}, 3);
      mappers.insert(new Object[]{xa, xb, xc, xd, xe, xf}, 4);
      
    
      Assert.assertEquals(mappers.count(Z.class), 11);
      Assert.assertEquals(mappers.count(Y.class), 11);
      Assert.assertEquals(mappers.count(X.class), 6);

      
              
      ConditionObj<X> cx = mappers.getMapper(X.class).newCondition();
      
      String conditionStr = "data2.data5.id6 < ? and data3.data5.id6 > ?";
      ConditionObjUtil.setCondition(cx, conditionStr, 10, 5);
      
      Assert.assertEquals(mappers.count(true, cx), 3);
      List<X> rtn = mappers.select(true, EagerToGet.ENTITY, cx);
      Assert.assertEquals(rtn.size(), 3);      
      rtn = mappers.select(true, EagerToGet.NONE, cx);
      Assert.assertEquals(rtn.size(), 3);
      
      mappers.delete(true, new Object[]{xa, xb, xc, xd, xe, xf}, 1);
      mappers.delete(true, new Object[]{ya, yb, yc, yd, ye, yf, yg, yh, yi, yj, yk}, 2);
      mappers.delete(true, new Object[]{za, zb, zc, zd, ze, zf, zg, zh, zi, zj, zk}, 3);  
      
    }
    finally
    {  
      mappers.close();
      DefaultTableCreator.drop(mappers, X.class);
      DefaultTableCreator.drop(mappers, Y.class);
      DefaultTableCreator.drop(mappers, Z.class);      
    }    
  }  
}
Powered by Create your own unique website with customizable templates.