在ofbiz中对实体的访问(数据库)是通过delegate对象来进行的,而delegate对象是GenericDelegator类的一个实例,他包含有关实体操作的方法和属性。
1、delegator对象的获取
l
<jsp:useBeanid="delegator"type="org.ofbiz.core.entity.GenericDelegator"scope="request"/>
l
GenericDelegatordelegato
l
GenericDelegatordelegato
l
GenericDelegatordelegato
2、 数据访问
1)以delegate对象进行数据访问
l
GenericValuepartyRole=delegator.makeValue("PartyRole",UtilMisc.toMap("partyId",partyId,"roleTypeId",context.get("roleTypeId")));
partyRole.create();
l
partyRole=delegator.findByPrimaryKey("PartyRole",UtilMisc.toMap("partyId",partyId,"roleTypeId",context.get("roleTypeId")));
partyRole.remove();
l
delegator.storeAll(storeAll);
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);
将数值对象,放到List中
List toBeStored = newArrayList();
toBeStored.add(orderHeader);
toBeStored.add(orderStatus);
将数值对象,存储到数据实体中
delegator.storeAll(toBeStored);
-----------------------------------------
l
l
2)依据数值对象进行访问
在现有的数值对象上可以进行下列操作,
l
l
l
l