OfBiz中的数据操作

1.OfBiz中利用delegator访问数据库

1)创建GenericDelegator对象
  1.1 service中
  public static Map createHelloPerson(DispatchContext dctx, Map context) {
          GenericDelegator delegator = dctx.getDelegator();
     ...
  }
  1.2手工建立GenericDelegator对象
  GenericDelegator delegator = GenericDelegator.getGenericDelegator("default");

2)Insert a record
  通过调用delegator对象的getNextSeqId(), makeValue(String entityName, Map fields)和create()方法。
  例如:
       String helloPersonId = delegator.getNextSeqId("HelloPerson");
    GenericValue helloPerson = delegator.makeValue("HelloPerson",
                    UtilMisc.toMap("helloPersonId", helloPersonId)); // create a GenericValue from ID we just got
      helloPerson.setNonPKFields(context); // move non-primary key fields from input parameters to GenericValue
    delegator.create(helloPerson); // store the generic value, ie persists it
   
3)Remove a record
    delegator.removeByAnd(String entityName, Map fields);
   
4)Strore a record
    例如:
      Map pk = UtilMisc.toMap("attribute1", attribute1Value, "attribute2", attribute2Value);//pk中存储了查询条件
    GenericValue obj = delegator.findByPrimaryKey("ClassName", pk);
      obj.setNonPKFields(context);//contex为Map类型,存储了要更新的字段
    obj.store();

5)Store records
    List resultList = delegator.findAll(String entityName, List orderBy);
    List toStore = new ArrayList();
    toStore.addAll(resultList);
    delegator.storeAll(toStore);
   
6)Look for record/records
     findByAnd,findByCondition、findByLike、findByOr、findByPrimaryKey、
     findListIteratorByCondition、 findall、findAllByPrimaryKeys
    
2) 依据数值对象进行访问
    在现有的数值对象(GenericValue类型)上可以进行下列操作:
        根据关系查找关联信息getRelated,包括getRelated、getRelatedByAnd、getRelatedDummyPK、getRelatedMulti、getRelatedOrderBy。
        刷新本数值对象refresh
        保存本数值对象store,主要用于修改后的保存
        删除数值对象remove,包括删除本数值对象remove和删除某个关联的数值对象removeRelated
        在现有数值对象上的操作是通过调用
   
    更加具体的信息可参考:http://www.opentaps.org/javadocs/release-1.0.1/framework/api/


你可能感兴趣的:(OfBiz中的数据操作)