一、根据主键进行删除

	/**
* 按主键进行删除
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> deleteUomByPrimaryKey(
DispatchContext dctx, Map<String,Object> context){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //TODO 在这里考虑的不是很全面, 还需要讨论一下: 1) MiscMap方式 2) delegator.makePKSingle方法
Map<String,Object> pkFields = FastMap.newInstance();
pkFields.put("uomId", "BaseLineProduct"); //这里删除前面创建的基线产品信息
GenericPK primaryKey = delegator.makePK("Uom", pkFields);
try {
//执行按主键删除操作
delegator.removeByPrimaryKey(primaryKey);
} catch (GenericEntityException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0002,primaryKey.toString());
}
//把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

二、根据多条件进行删除

	/**
* 按多条件进行删除, 并且这些条件是'与' 的关系, 一般是当删除条件为非主键时使用
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> deleteUomByOtherFields(DispatchContext dctx, Map<String,Object> context){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //TODO 在这里考虑的不是很全面, 还需要讨论一下: MiscMap方式 //这里删除前面创建的现金管理系统信息
Map<String,Object> deleteFields = FastMap.newInstance();
deleteFields.put("abbreviation", "Cashm");
deleteFields.put("description", "现金管理系统");
try {
//根据设定的条件执行删除操作
delegator.removeByAnd("Uom", deleteFields);
} catch (GenericEntityException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0002,deleteFields.toString());
}
//把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

三、根据一个字段有多个值时进行删除

/**
* 根据一个字段的多个值,删除记录
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> deleteUomByMoreValues(DispatchContext dctx, Map<String,Object> context){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //这里删除前面创建的"基线产品信息"和"现金管理系统信息"
Map<String,Object> deleteFields = FastMap.newInstance();
deleteFields.put("abbreviation", "BLP");
deleteFields.put("abbreviation", "Cashm"); //收集删除条件
EntityCondition deleteBLPCon = EntityCondition.makeCondition("abbreviation", EntityOperator.EQUALS, "BLP");
EntityCondition deleteCashmCon = EntityCondition.makeCondition("abbreviation", EntityOperator.EQUALS, "Cashm");
EntityCondition deleteCondition = EntityCondition.makeCondition(deleteBLPCon, EntityOperator.OR, deleteCashmCon);
try {
System.err.println("删除条件: " + deleteCondition.toString());
//根据设定的条件执行删除操作
delegator.removeByCondition("Uom", deleteCondition);
} catch (GenericEntityException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0002,deleteCondition.toString());
}
//把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

四、根据时间段进行删除

	/**
* 删除一个时间段内的数据
* @param dctx
* @param context
* @return
*/
public static Map<String,Object> deleteUomByDate(DispatchContext dctx, Map<String,Object> context){ //取得实体引擎实例
GenericDelegator delegator = dctx.getDelegator(); //从输入参数中取出开始日期和结束日期
String beginDateStr = (String) context.get("beginDate");
String endDateStr = (String) context.get("endDate"); //设置查询条件: 记录时间 大于 beginDate ,记录时间 小于 endDate
List<EntityCondition> conList = FastList.newInstance(); //如果传入的开始日期不为空,则设置删除条件: 删除的记录不能早于开始日期
if( UtilValidate.isNotEmpty(beginDateStr)){
try {
//先把开始日期的字符串转成Timestamp格式
Timestamp beginDate = UtilDateTime.stringToTimeStamp(beginDateStr, InnerConstant.DATE_FORMAT, TimeZone.getDefault(), Locale.CHINA);
//再把整个日期的时间部分设置成 00:00:00.000
beginDate = UtilDateTime.getDayStart(beginDate);
//设置查询条件: 记录时间 大于 beginDate
EntityCondition startDateCon = EntityCondition.makeCondition("createdStamp", EntityOperator.GREATER_THAN_EQUAL_TO, beginDate);
conList.add(startDateCon);
} catch (ParseException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0003,beginDateStr,e.getMessage());
}
} //如果传入的结束日期不为空, 则设置删除条件: 删除的记录不能晚于结束日期
if( UtilValidate.isNotEmpty(endDateStr)){
try {
//先把结束日期的字符串转成Timestamp格式
Timestamp endDate = UtilDateTime.stringToTimeStamp(endDateStr, InnerConstant.DATE_FORMAT, TimeZone.getDefault(), Locale.CHINA);
System.err.println(endDate.toString());
//再把结束日期的时间部分设置成: 23:59:59.999
endDate = UtilDateTime.getDayEnd(UtilDateTime.nowTimestamp());
//设置查询条件: 记录时间 小于 endDate
EntityCondition endTimeCon = EntityCondition.makeCondition("createdStamp", EntityOperator.LESS_THAN_EQUAL_TO, endDate);
conList.add(endTimeCon);
} catch (ParseException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0004,endDateStr,e.getMessage());
}
}
EntityCondition deleteCondition = EntityCondition.makeCondition(conList, EntityOperator.AND); try {
//根据设定的条件执行删除操作
delegator.removeByCondition("Uom", deleteCondition);
} catch (GenericEntityException e) {
//则把错误信息以Error级别打印到日志文件中
Debug.logError(e, module);
//把指定的错误码对应的描述信息返回给服务调用者
return ReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0002,deleteCondition.toString());
}
//把表示成功的信息返回给服务调用者
return ReturnMapUtil.getSuccessMap();
}

XML配置

	<service name="deleteUomByDate" engine="java"
location="com.giantstone.bosent.demo.delegator.DelegatorDeleteDemoService" invoke="deleteUomByDate">
<attribute name="beginDate" type="String" mode="IN" optional="true" />
<attribute name="endDate" type="String" mode="IN" optional="true" />
<attribute name="returnCode" type="Map" mode="OUT" optional="true" />
</service>

 注意:时间转化

//先把开始日期的字符串转成Timestamp格式
Timestamp beginDate = UtilDateTime.stringToTimeStamp(beginDateStr, InnerConstant.DATE_FORMAT, TimeZone.getDefault(), Locale.CHINA);
//再把整个日期的时间部分设置成 00:00:00.000
beginDate = UtilDateTime.getDayStart(beginDate);
beginDate = DateTimeUtil.utilDateTosqlDate(startTime.concat(AgentInspectorFields.START_TIME_STR));

调用方法如下:

    /** 开始时间 **/
public static final String START_TIME_STR = " 00:00:00"; /** 结束时间**/
public static final String END_TINE_STR = " 23:59:59"; public static java.sql.Date utilDateTosqlDate(String utilDate)
throws BusinessException {
if (UtilValidate.isEmpty(utilDate)) {
return null;
} else {
return utilDateTosqlDate(stringToDate(utilDate));
}
} public static java.sql.Date utilDateTosqlDate(Date utilDate)
throws BusinessException {
if (UtilValidate.isEmpty(utilDate)) {
return null;
} else {
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
return sqlDate;
}
}

  

  

												

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

  1. Ofbiz项目学习——阶段性小结——更新数据

    一.根据一个字段进行修改 /** * 根据一个字段进行修改(这个条件字段可以是主键, 也可以不是主键) * @param dctx * @param context * @return */ publ ...

  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. MongoDB 学习笔记之 删除数据,集合,数据库

    删除数据,集合,数据库: 删除一个文档: db.media.deleteOne({"name": "Sky"}) 删除多个文档: db.media.delete ...

  7. [20190213]学习bbed-恢复删除的数据.txt

    [20190213]学习bbed-恢复删除的数据.txt --//以前也做过类似测试,当时在用bbed做verify时错误都不处理,当时的想法就是能读出就ok了.--//而且当时也做成功,纯粹是依葫芦 ...

  8. Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

    1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...

  9. Cassandra1.2文档学习(11)—— 删除数据

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

随机推荐

  1. Docker 版rocketmq部署

    rocketmq 部署启动指南-Docker 版   最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑. 准备工作# ...

  2. flume安装使用+根据数据源分类

    安装搭建: 1)解压下载的flume(安装jdk1.6及其以上) 2)在conf文件夹里面建立example.conf文件 #example.conf:单节点Flume配置 #命名Agent a1的组 ...

  3. javascript 函数的暂停和恢复

    javascript 异步编程从来都是一个难题,最开始我们用 callback,但随之触发了回调地狱,于是"发明" Promise 解决 callback 嵌套过深的问题.然而由于 ...

  4. 【LeetCode】搜索旋转排序数组【两次二分】

    假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值, ...

  5. [转帖]/var/log/wtmp文件的作用

    /var/log/wtmp文件的作用 https://blog.51cto.com/oldyunwei/1658778   /var/log/wtmp是一个二进制文件,记录每个用户的登录次数和持续时间 ...

  6. Mysql 数据库 表中列的操作

    [1]Mysql数据库中表的列操作 Mysql中关于表中列的操作集语句: -- [1]增加一列 ) DEFAULT NULL COMMENT '目的码区号'; -- [2]增加一列,在dnis_are ...

  7. C#简单构架之EF进行读写分离+多数据库Mysql/SqlServer

    http://www.php361.com/index.php?c=index&a=view&id=3857 不建议用,太重的框架EF,仅仅参考一下别人的思路就好. [导读]最近因为项 ...

  8. Entity Framework 学习系列(3) - MySql Code First 开发方式+数据迁移

    目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...

  9. C#实现将字符串转换成代码并执行

    我们在写JavaScript程序的时候,有一个函数很有趣,eval(),这个方法非常有趣,他可以编译他内部的字符串,并将字符串按照JS代码执行,例如eval(‘alert(“message”)’),执 ...

  10. docker学习之路-build asp.net core 2.2产生 warning MSB3245: Could not resolve this reference.错误的解决办法

    在docker build的时候有时我们可以直接使用dotnet publish来发布,但是如果用docker构建镜像的时候却会出现下面的错误: 解决办法:https://stackoverflow. ...