ofbiz创建数据库实体代码详解析

  • package org.ofbiz.hello3;

     

    import java.util.HashMap;

    import java.util.Map;

     

    import org.ofbiz.base.util.Debug;        // uses Log4J

    import org.ofbiz.base.util.UtilMisc;     // helpful utility for working with Maps, Lists, etc.

    import org.ofbiz.entity.GenericDelegator;

    import org.ofbiz.entity.GenericEntityException;

    import org.ofbiz.entity.GenericValue;

    import org.ofbiz.service.DispatchContext;

    import org.ofbiz.service.ServiceUtil;

     

    public class Hello3Services {

       

    public static final String module = Hello3Services.class.getName();

    // 用于测试。

      

    public static Map createHelloPerson(DispatchContext dctx, Map context) {

    //JAVA服务写成一种标准的格式:一个公共类里有一个公共静态方法,该方法有两个参数,//一个DispatchContext用于取得对象(delegators, dispatchers, locale, and //security),一个名叫context的影射Map包含了你的输入参数并返回一个结果影射。

     

           GenericDelegator delegator = dctx.getDelegator(); 

    //步骤一、获取delegator

    // 用DispatchContext类的getDelegator()方法取得和该dispatch/context想关联的//GenericDelegator对象,即delegator. GenericDelegator是用于访问数据库的类,想//操作数据库必须先取得该对象。      

           

            try {

                String helloPersonId = delegator.getNextSeqId("HelloPerson");

    //步骤二、用delegator调用方法取得序列号

    // GenericDelegator 类的getNextSeqId 方法用于从给定的序列中取得下一个有保证的//唯一的序列号;如果该序列不存在,该方法将创建它。方法原型为:

    //String getNextSeqId(java.lang.String seqName)

     

                Debug.logInfo("helloPersonId = " + helloPersonId, module);

    // 输出到控制台或日至,用于调试

     

                GenericValue helloPerson = delegator.makeValue("HelloPerson",

                        UtilMisc.toMap("helloPersonId", helloPersonId));

    //步骤三、调用delegator的makeValue方法创建GenericValue对象

    // GenericDelegator 类的makeValue方法用于创建GenericValue对象,该对象对应数据//库中一个具体实体,该方法的第一个参数是String型的实体名,第二个参数是一个映射。//方法原型为: 

    //GenericValue makeValue (java.lang.String entityName, java.util.Map fields)

     

     

                helloPerson.setNonPKFields(context);

    //步骤四、将输入参数中的非主码参数向GenericValue对象赋值

    // GenericValue对象helloPerson调用GenericValue类的setNonPKFields方法将输入的//非主码域值传递给自己。该方法的原型为:

    //void setNonPKFields(java.util.Map fields)

    //其实该方法是GenericValue类继承GenericEntity类的方法得来的。

     

                delegator.create(helloPerson);

    //步骤五、调用delegator的create方法将GenericValue对象写入数据库

    // 调用GenericDelegator类的create()方法根据GenericValue 的格式创建实体,并将

    //实体写入数据源。该方法的原型是:GenericValue create(GenericValue value)

     

                

                Map result = ServiceUtil.returnSuccess();

    // 由ServiceUtil类的returnSuccess()方法返回一个Map对象

    //方法原型是:

    //static java.util.Map returnSuccess(java.lang.String successMessage)

     

                result.put("helloPersonId", helloPersonId);

    // 在映射中关联指定对象的值到指定对象的码,即将输出参数放到映射中返回用户

    //方法原型为:Object put(Object key, Object value)

     

     

                return result;

    // return Map

            } catch (GenericEntityException ex) { // required if you use delegator in Java

                return ServiceUtil.returnError(ex.getMessage());

            }

        }

    }

     

    小结:

    步骤一、获取delegator

    步骤二、用delegator调用方法取得序列号

    步骤三、调用delegator的makeValue方法创建GenericValue对象

    步骤四、将输入参数中的非主码参数向GenericValue对象赋值

    步骤五、调用delegator的create方法将GenericValue对象写入数据库

    最后,通过MAP返回。


http://blog.sina.com.cn/s/blog_4a4820f9_0008pi.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值