在ofbiz中对实体的访问(数据库)是通过delegate对象来进行的,而delegate对象是GenericDelegator类的一个实例,他包含有关实体操作的方法和属性。
l 在JSP中使用
<jsp:useBeanid="delegator"type="org.ofbiz.core.entity.GenericDelegator"scope="request"/>
l 在severlet或event中使用
GenericDelegatordelegator=(GenericDelegator)request.getAttribute("delegator");
l 通过一个已知的数值对象获取delegator,方法为
GenericDelegatordelegator=userLogin.getDelegator();
l 手工建立
GenericDelegatordelegator=GenericDelegator.getGenericDelegator("default")
l 插入使用create方法,在插入之前一般要用makeValue方法,建立一个数值对象,然后进行插入,典型的语句为
GenericValuepartyRole=delegator.makeValue("PartyRole",UtilMisc.toMap("partyId",partyId,"roleTypeId",context.get("roleTypeId")));
partyRole.create();
l 删除remove方法,remove一般的用法为
partyRole=delegator.findByPrimaryKey("PartyRole",UtilMisc.toMap("partyId",partyId,"roleTypeId",context.get("roleTypeId")));
partyRole.remove();
l 使用store方法,包括(store和storeall)典型的语句为
delegator.storeAll(storeAll);
store存储一个数值对象,而storeall存储用List组织起来的一组数值对象。
Storeall的用法说明:
-----------------------------------
通过findByPrimaryKey在一个实体中查找出符合条件的一条数值对象
GenericValue orderHeader = delegator.findByPrimaryKey
("OrderHeader", UtilMisc.toMap("orderId", orderId));
对数值对象中的某个值进行修改
orderHeader.set("statusId", statusId);
创建另外一个不同实体的数值对象(当然也可以采用相同的实体)。
changeFields.put("orderStatusId",
delegator.getNextSeqId("OrderStatus").toString());
changeFields.put("statusId", statusId);
changeFields.put("orderId", orderId);
changeFields.put("orderItemSeqId", orderItem.getString("orderItemSeqId"));
changeFields.put("statusDatetime", UtilDateTime.nowTimestamp());
GenericValue orderStatus = delegator.makeValue("OrderStatus", changeFields);
使用setPKFields ,setNonPKFields建立一个数值对象
roleType = delegator.makeValue("RoleType", null);
roleType.setPKFields(context);
roleType.setNonPKFields(context);
roleType = delegator.create(roleType);
将数值对象,放到List中
List toBeStored = new ArrayList();
toBeStored.add(orderHeader);
toBeStored.add(orderStatus);
将数值对象,存储到数据实体中
delegator.storeAll(toBeStored);
-----------------------------------------
l 查找使用find方法,包括findall、findAllByPrimaryKeys、findByAnd,findByCondition、findByLike、findByOr、findByPrimaryKey、findListIteratorByCondition
l 依据某数值对象的关系,查找关联信息,可以使用getRelated方法。包括getRelated、getRelatedByAnd、getRelatedDummyPK、getRelatedOne、getRelatedOrderBy
在现有的数值对象上可以进行下列操作,
l 根据关系查找关联信息getRelated,包括getRelated、getRelatedByAnd、getRelatedDummyPK、getRelatedMulti、getRelatedOrderBy。
l 刷新本数值对象refresh
l 保存本数值对象store,主要用于修改后的保存
l 删除数值对象remove,包括删除本数值对象remove和删除某个关联的数值对象removeRelated
在现有数值对象上的操作是通过调用