ibatis通过Map封装参数调用存储过程
一、存储过程如下(领导写的)
CREATE OR REPLACE PROCEDURE agent_UIMOrIMEICheck_pro (
I_CARD_NO IN VARCHAR2, --UIM卡或手机串号
I_CARD_FLAG IN NUMBER, --标识 1. 验证UIM卡是否已经被使用 2.验证补卡设备号是否当天多次补卡
O_RETURN_VALUE OUT VARCHAR2 --返回结果
)
AS
V_COUNT NUMBER;
V_agentOperid varchar2(30);
V_time date;
V_orderId varchar2(30);
/******************************************************************************
该存储过程用于判断UIM卡号是否已经使用过或手机串号是否已经进行空机核销或使用
Authority wanglongqiang
修改标识:去掉串号验证逻辑,完善UIM卡验证 传入标识入参改为传入设备号
******************************************************************************/
BEGIN
O_RETURN_VALUE := 'SUCCESS'; if(I_CARD_FLAG=1)then
--验证UIM卡输入是否正确
if(lengthb(I_CARD_NO)<>19) then
O_RETURN_VALUE:='系统检测您输入的ICCID(UIM)卡号存在问题,请确保是否为19位或是否输入空格!'; elsif(substr(I_CARD_NO,1,7)<>'8986031') then
O_RETURN_VALUE:='系统检测您输入的ICCID(UIM)卡号存在问题,请确保是否以8986031打头!';
else --uim卡使用情况验证 uim卡使用
--1.判断产品新装里面是否用到该白卡
SELECT COUNT (business_orderId)
INTO V_COUNT
FROM log_businessaccept
WHERE NVL (business_orderId, '0') <> '0' and issuccess in ('订单成功','前台待缴款') AND UIM_NUMBER = I_CARD_NO;
IF (V_COUNT = 0) then
--查询补卡信息表中是否有记录存在
select count(order_id) into V_COUNT from LOG_REPAIRCARD where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and uimnumber= I_CARD_NO;
if(V_COUNT=0) then
O_RETURN_VALUE := 'SUCCESS';
else
select agent_id,business_date,order_id into V_agentOperid,V_time,V_orderId from log_repaircard where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and flag=0 and uimnumber= I_CARD_NO;
O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-MM-dd')||'补(换)卡已使用该UIM卡,订单号为:'||V_orderId||'请更换新卡!';
end if; else
select agent_operid,business_date,business_orderid into V_agentOperid,V_time,V_orderId from log_businessaccept WHERE NVL (business_orderId, '0') <> '0' and issuccess in ('订单成功','前台待缴款') AND UIM_NUMBER = I_CARD_NO;
O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-MM-dd')||'新装受理已使用该UIM卡,订单号为:'||V_orderId||'请更换新卡!'; end if; end if; else
select count(*) into V_COUNT from LOG_REPAIRCARD where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and to_char(business_date,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd') and businessnumber=I_CARD_NO;
if(V_COUNT=0) then
O_RETURN_VALUE := 'SUCCESS';
else
select agent_id,business_date,order_id into V_agentOperid,V_time,V_orderId from log_repaircard where nvl(order_id,'0')<>'0' and is_success in ('订单成功','前台待缴款') and to_char(business_date,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd') and businessnumber=I_CARD_NO and rownum<2;
O_RETURN_VALUE:='代理商工号'||V_agentOperid||'于'||to_char(V_time,'yyyy-mm-dd hh24:mi:ss')||'(今天)已对该设备号进行补(换)卡,订单号为:'||V_orderId||',请到订单查询菜单查询订单状态信息!';
end if; end if;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
O_RETURN_VALUE := 'SUCCESS';
WHEN OTHERS
THEN
O_RETURN_VALUE := 'SUCCESS';
END agent_UIMOrIMEICheck_pro;
注意点:该存储过程不是我写的,公司所有。
二、在ibatis配置文件中添加配置
<parameterMap class="map" id="checkParam">
<parameter property="cardNo" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="cardFlag" jdbcType="DECIMAL" javaType="java.lang.Integer" mode="IN"/>
<parameter property="result" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap> <procedure id="checkUIMorIMEI" parameterMap="checkParam">
<![CDATA[
{call agent_UIMOrIMEICheck_pro(?,?,?)}
]]>
</procedure>
注意点:parameterMap中的参数顺序要对应三个问号顺序,也就是存储过程的3个参数顺序,in表示入参,out表示出参
三、调用
public String checkCardNo(String cardNo, String cardFlag) {
Map map = new HashMap();
map.put("cardNo", cardNo);
map.put("cardFlag", Integer.parseInt(cardFlag));
try{
getSqlMapClientTemplate().insert("DLS_LOG_BUSINESSACCEPT.checkUIMorIMEI",map);
String result=(String)map.get("result");
return result;
}catch(Exception ex){
}
}
注意点:这里map要封装所需要的参数,只有两个,ibatis会自动把返回结果也放到map里面去
ibatis通过Map封装参数调用存储过程的更多相关文章
- MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程
虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...
- Spring JDBC调用存储过程
以下示例将演示spring jdbc如何调用存储过程.将通过调用存储过程来读取Student表中的一个可用记录.将传递一个学生ID并获取学生记录信息. 语法: SimpleJdbcCall jdbcC ...
- 【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别
用过mybatis的应该都知道它是ibatis被Google收购后重新命名的一个工程,因此也做了大量升级.本文就来介绍下两者在调用存储过程上的一点区别,ibatis有一个专门的标签<proced ...
- 使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果
这里接口用表存起来,标记请求方式,然后接受参数,消息或者请求参数都可以, 然后先是遍历需要调用的接口,封装参数,再分别调用get与post即可,没有微服务还是得自己写 //消息转发-获取参数中对应参数 ...
- ibatis调用存储过程(无返回参数)
ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...
- Mybatis 调用存储过程,使用Map进行输入输出参数的传递
做个记录,以备后用 java代码: public String texuChange() throws Exception { try { ...
- ibatis 调用存储过程
ibatis 调用存储过程 CreationTime--2018年8月15日19点38分 Author:Marydon 1.返回系统游标集合 第一步:返回值,将返回值封装到HashMap中 < ...
- Java和Ibatis调用存储过程并取得返回值详解
Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ...
随机推荐
- 通过原生js的ajax或jquery的ajax获取服务器的时间
在实际的业务逻辑中,经常是与时间相关的,而前端能获得的时间有两个:客户端的时间,服务器的时间. 客户端时间通过 javascript中的Date对象可以获取,如 var dt = new Date() ...
- hibernate懒加载和json序列化冲突
因为懒加载这个对象属性只是一个代理对象,如果json直接当作一个存在的属性去序列化就会出现错误,所以就只能这样了,当然还有其他办法吧 或者在class上加上 @JsonIgnoreProperties ...
- cmake学习笔记(五)
在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...
- BZOJ 1601 [Usaco2008 Oct]灌水
1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec Memory Limit: 162 MB Description Farmer John已经决定把水灌到他的n(1 ...
- jQuery报错:Uncaught ReferenceError: $ is not defined
在使用jQuery的时候,发现有如下报错: Uncaught ReferenceError: $ is not defined (anonymous function) 出现这个报错的原因: 1.j ...
- ThinkPHP - 加载第三方类库
目录结构: 将核心的第三方目录放置在Apps下的Core目录中. 这样其他控制器便可以轻松访问. *为什么不直接放在ThinkPHP框架既有的第三方文件夹中,答案是便于升级,升级TP版本时,可直接替换 ...
- jquery的slideUp、slideDown、slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug
jquery的slideUp.slideDown.slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug: 1. 因position引起的问题 影响:IE全系列 症状:在需要sl ...
- 面向对象程序设计-C++ Steam & Vector 【第三次上课笔记】
大家可以下载后用Vim 或者 Sublime Text等文本编辑器查看 Conference: http://blog.csdn.net/candy1232009/article/details/70 ...
- iOS XMPP之常见错误一:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>)
在XMPP开发中,使用XMPPStream进行连接服务器后,验证过程中,比较常见的一个错误是 <failure xmlns="urn:ietf:params:xml:ns:xmpp-s ...
- SilkTest天龙八部系列7-动态对象识别
在测试web应用时,我们常常需要面对web页面对象变化频繁,并且使用预定义方式识别对象慢的困难.为了解决这些问题,SilkTest引入了dynamic object recognition技术,它使用 ...