Ofbiz项目学习——阶段性小结——插入数据

一、通用插入操作

/**
	 * 
	 * 编写一个服务createUomOneDemo,
	 * 该服务的作用是在表Uom中增加一条记录,其中:
	 * 		字段uomId的值为“BaseLineProduct”、
	 *      字段abbreviation的值为“BLP”、
	 *      字段description的值为“基线产品”
	 * @param dctx
	 * @param context
	 * @return
	 */
	public static Map<String,Object> createUomOneDemo(
DispatchContext dctx, Map<String,Object> context)
{
		
		  //取得实体引擎实例
        GenericDelegator delegator = dctx.getDelegator();
        
        //创建一条Uom记录的对象
        GenericValue oneUom = delegator.makeValue("Uom");
        
        //向其中加入每个字段对应的数据
        oneUom.setString("uomId","BaseLineProduct");
        oneUom.setString("abbreviation", "BLP");
        oneUom.setString("description", "基线产品");	
 
        try {
        	//保存到数据库的Uom表中
			oneUom.create();
		  } catch (GenericEntityException e) {
			//则把错误信息以Error级别打印到日志文件中
			Debug.logError(e, module);
			//把指定的错误码对应的描述信息返回给服务调用者
			Return ReturnMapUtil.getErrorMap( 
DemoErrorMapping.BASE0001,oneUom.toString());
		}
		//把表示成功的信息返回给服务调用者
		return ReturnMapUtil.getSuccessMap();
}

  二、自动产生主键的插入操作(一)

/**
 * 
 * 编写一个服务createUomTwoDemo,
 * 该服务的作用是在表Uom中增加一条记录,其中:
 * 		字段uomId要求自动生成、
 *      字段abbreviation的值为“Cashm”,
 *      字段description的值为“现金管理系统”
 * @param dctx
 * @param context
 * @return
 */
	public static Map<String,Object> createUomTwoDemo(DispatchContext dctx, Map context){		
		//取得实体引擎实例
        GenericDelegator delegator = dctx.getDelegator();
        
        //创建一条Uom记录的对象
        GenericValue oneUom = delegator.makeValue("Uom");
        
        //向其中加入每个字段对应的数据
        String uomId = delegator.getNextSeqId("Uom"); //该方法用于自动创建一个实体的主键编号, 这里创建了Uom表的主键(uomId)的编号
        oneUom.setString("uomId",uomId);
        oneUom.setString("abbreviation", "Cashm");
        oneUom.setString("description", "现金管理系统");
		/**
		 * 一般通过如下代码添加属性
		 * Map<String,Object> fields = FastMap.newInstance();
		 * String uomId = delegator.getNextSeqId("Uom");
		 * fields.put("uomId",uomId);
		 * fields.put("abbreviation","Cashm");
		 * fields.put("description","现金管理系统");
		 * GenericValue SingleUom = delegator.makeValue("Uom", fields);
		 * SingleUom.create();
		 */

        try {
        	//保存到数据库的Uom表中
			oneUom.create();
		} catch (GenericEntityException e) {
			//则把错误信息以Error级别打印到日志文件中
			Debug.logError(e, module);
			//把指定的错误码对应的描述信息返回给服务调用者
			return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0001,oneUom.toString());
		}
		
		//把表示成功的信息返回给服务调用者
		return ReturnMapUtil.getSuccessMap();
	}
}

  二、自动产生主键的插入操作(二)

// 委托引擎
Delegator delegator = dctx.getDelegator();
// 获取GenericValue
GenericValue genericValue = delegator.makeValue("实体映射表名称");
// 获取自增主键
genericValue.setNextSeqId();
// 设置非主键字段 Map<? extends Object, ? extends Object> fields
genericValue.setNonPKFields(fields);
// 还有一些需要单独处理
genericValue.set(key, value, true);
// 创建一条记录
GenericValue oneRecord = delegator.create(genericValue);
// 如果需要获取主键id
Object id = oneRecord.get("id");

  

原文地址:https://www.cnblogs.com/gzhcsu/p/11203198.html