Posted on 2008-09-08 17:59
追风舞者 阅读(1226)
评论(0) 编辑 收藏 所属分类:
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/