ofbiz编程指南

ofbiz中对实体的访问(数据库)是通过delegate对象来进行的,而delegate对象是GenericDelegator类的一个实例,他包含有关实体操作的方法和属性。

1、delegator对象的获取

l        JSP中使用

<jsp:useBeanid="delegator"type="org.ofbiz.core.entity.GenericDelegator"scope="request"/>

l        severletevent中使用

GenericDelegatordelegator=(GenericDelegator)request.getAttribute("delegator");

l        通过一个已知的数值对象获取delegator,方法为

GenericDelegatordelegator=userLogin.getDelegator();

l        手工建立

GenericDelegatordelegator=GenericDelegator.getGenericDelegator("default")

2、           数据访问

1)以delegate对象进行数据访问

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方法,包括(storestoreall)典型的语句为

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 = newArrayList();

toBeStored.add(orderHeader);

toBeStored.add(orderStatus);

将数值对象,存储到数据实体中

delegator.storeAll(toBeStored);

-----------------------------------------

l        查找使用find方法,包括findallfindAllByPrimaryKeysfindByAndfindByConditionfindByLikefindByOrfindByPrimaryKeyfindListIteratorByCondition

 

l        依据某数值对象的关系,查找关联信息,可以使用getRelated方法。包括getRelatedgetRelatedByAndgetRelatedDummyPKgetRelatedOnegetRelatedOrderBy

2)依据数值对象进行访问

在现有的数值对象上可以进行下列操作,

l        根据关系查找关联信息getRelated,包括getRelatedgetRelatedByAndgetRelatedDummyPKgetRelatedMultigetRelatedOrderBy

l        刷新本数值对象refresh

l        保存本数值对象store,主要用于修改后的保存

l        删除数值对象remove,包括删除本数值对象remove和删除某个关联的数值对象removeRelated

在现有数值对象上的操作是通过调用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值