一、根据一个字段进行修改

		/**
* 根据一个字段进行修改(这个条件字段可以是主键, 也可以不是主键)
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> updateUomByOneField(
DispatchContext dctx, Map<String,Object> context ){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //添加需要修改的字段
Map<String,Object> updateFields = FastMap.newInstance();
updateFields.put("description", "修改后的现金管理系统"); //这里删除前面创建的基线产品信息
/*.... 如果有其它字段需要修改, 还可以继续把要修改的值放到updateFields中.*/ //设置修改条件
EntityCondition updateCon = EntityCondition.makeCondition("abbreviation", EntityComparisonOperator.EQUALS,"Cashm");
try {
//执行按条件修改操作
delegator.storeByCondition("Uom", updateFields, updateCon); } catch (GenericEntityException e) {
Debug.logError(e, module); //把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0005,updateCon.toString(),e.getMessage());
} //把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

二、根据多条件进行修改

/**
* 根据多个字段进行修改(这个条件字段可以是主键, 也可以不是主键)
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> updateUomByMoreField( DispatchContext dctx, Map<String,Object> context ){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //添加需要修改的字段
Map<String,Object> updateFields = FastMap.newInstance();
updateFields.put("uomTypeId", "OTHER_MEASURE"); //这里删除前面创建的基线产品信息
/*.... 如果有其它字段需要修改, 还可以继续把要修改的值放到updateFields中.*/ //设置修改条件
List<EntityCondition> updateConList = FastList.newInstance();
updateConList.add( EntityCondition.makeCondition("abbreviation", EntityComparisonOperator.EQUALS,"BLP") );
updateConList.add( EntityCondition.makeCondition("description", EntityComparisonOperator.EQUALS,"基线产品") );
/*.... 如果有其它的修改条件, 还可以继续把修改条件放到updateConList中*/ EntityCondition updateCondition = EntityCondition.makeCondition(updateConList, EntityOperator.AND);
try {
//执行按条件修改操作
delegator.storeByCondition("Uom", updateFields, updateCondition); } catch (GenericEntityException e) {
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0005,updateCondition.toString(),e.getMessage());
} //把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

三、对一个已经查询出的记录进行修改

/**
* 对已经查询出的记录进行修改
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> updateUomAfterQuery( DispatchContext dctx, Map<String,Object> context ){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //获取服务引擎
LocalDispatcher dispatcher = dctx.getDispatcher(); //先调用查询服务从Uom表中查询出基线产品信息
Map<String,Object> queryInput = FastMap.newInstance();
Map<String,Object> queryOutput = null;
try {
queryOutput = dispatcher.runSync("queryUomByPrimaryKey", queryInput);
} catch (GenericServiceException e) {
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0007,e.getMessage());
} //根据返回Map检查服务是否执行成功
if( !ServiceUtil.isSuccess(queryOutput)){
return queryOutput;
} //从返回结果中取出查询到的基线产品信息
GenericValue oneUom = (GenericValue) queryOutput.get("oneUom"); //修改基线产品信息中的描述
oneUom.setString("description", "修改后的基线产品信息"); //保存
try {
oneUom.store();
} catch (GenericEntityException e) {
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0008,e.getMessage());
}
//返回
return ReturnMapUtil.getSuccessMap();
}

Ofbiz项目学习——阶段性小结——更新数据的更多相关文章

  1. Ofbiz项目学习——阶段性小结——删除数据

    一.根据主键进行删除 /** * 按主键进行删除 * @param dctx * @param context * @return */ public static Map<String,Obj ...

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

    一.通用插入操作 /** * * 编写一个服务createUomOneDemo, * 该服务的作用是在表Uom中增加一条记录,其中: * 字段uomId的值为“BaseLineProduct”. * ...

  3. Ofbiz项目学习——阶段性小结——视图

    一.简要介绍 1.按照SQL的视图概念:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表.视图包含行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 2. ...

  4. Ofbiz项目学习——阶段性小结——查询

    一.组装参数的学习 首先是查询条件,对于查询条件,需要判断是否从前端传递空值?——怎么处理查询空值? 当然可以一个一个进行判断,但是这样代码会导致很多,可以统一处理,形成一个公共方法. 1. 单个处理 ...

  5. Ofbiz项目学习——阶段性小结——服务返回结果

    一.返回成功 1.在.DispatcherReturnDemoService类中编写服务[returnSuccess],内容如下: /** * 返回成功结果 * @param dctx * @para ...

  6. mybatis学习之路----批量更新数据两种方法效率对比

    原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...

  7. Cassandra1.2文档学习(10)—— 插入和更新数据

    参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...

  8. MySQL更新数据时,日志(redo log、binlog)执行流程

    1:背景 项目需要做Es和数据库的同步,而手动在代码中进行数据同步又是Es的一些不必要的数据同步操作和业务逻辑耦合,所以使用的了读取mysql的binlog日志的方式进行同步Es的数据. 问题1:根据 ...

  9. android: SQLite更新数据

    学习完了如何向表中添加数据,接下来我们看看怎样才能修改表中已有的数据. SQLiteDatabase 中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法 接收四个参数,第一个 ...

随机推荐

  1. 解决Spring和SpringMVC扫描注解类的冲突问题

    原文地址:https://blog.csdn.net/xiaobao5214/article/details/52042041 最正确的配置方式:在主容器中applicationContext.xml ...

  2. mybatis:updatebyexample与updateByExampleSelective

    MyBatis,通常逆向工程工具生成接口和xml映射文件用于简单的单表操作. 有两个方法: updateByExample 和 updateByExampleSelective  ,作用是对数据库进行 ...

  3. Vue ----------- 了解, 展示json 数据

    Vue.js  是一套构建用户界面的渐进式框架. 优点: 与大型框架不同的是采用自底向上的增量开发的设计, 只聚焦于视图层,不仅易于上手,还便于与第三方库或既有项目整合 当与现代化工具链以及各种类库结 ...

  4. linux 重启jmeter服务

    #!/bin/bash #jmeter kill and start echo -e '\033[32m--------Jmeter---------------\033[0m' echo " ...

  5. MySQL基础-2

    目录 配置文件的使用 表的分类--数据库引擎 简单的表的增删改查(CRUD) 创建表的完整写法 Mysql中的数据类型 数字类型 字符串类型 枚举和集合 时间和日期 配置文件的使用 大家发现每次进入m ...

  6. echarts的地图省份颜色自适应变化

    在使用echarts的地图的时候省份的颜色可能随着数据的多少显示不同的颜色,但是当后台返回的数据的变化较大时可能就不好控制了,所以需要设置根据后台的数据进行自适应 将后台返回的数据中的value放入一 ...

  7. React学习笔记②

    import React,{Component} from 'react'; import Child from './Child.js' class App extends Component{ c ...

  8. 06-Vue路由

    什么是路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源: 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有 ...

  9. window界面自动化

    一.windows带界面的自动化1.AutoIt AutoIt3官方下载地址:https://www.autoitscript.com/files/autoit3/autoit-v3-setup.ex ...

  10. AR自动开票主程序导入发票的时候,出现错误提示''不能获取汇款地址''

    问题:AR自动开票主程序,出现错误不能获取汇款地址 解决:AR>设置-打印-汇入地址,汇入地址要增加此客户地点对应的国家: