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 ...
随机推荐
- Pick-up sticks(判断两直线相交)
Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11335 Accepted: 4250 D ...
- 读懂Swift 2.0中字符串设计思路的改变
Swift提供了一种高性能的,兼容Unicode编码的String实现作为标准库的一部分.在 Swift2中,String类型不再遵守CollectionType协议.在以前,String类型是字符的 ...
- BZOJ 1911: [Apio2010]特别行动队( dp + 斜率优化 )
sum为战斗力的前缀和 dp(x) = max( dp(p)+A*(sumx-sump)2+B*(sumx-sump)+C )(0≤p<x) 然后斜率优化...懒得写下去了... ------- ...
- 一天一个类--NIO 之Buffer
java.nio --- 定义了 Buffer 及其数据类型相关的子类.其中被 java.nio.channels 中的类用来进行 IO 操作的 ByteBuffer 的作用非常重要. java.n ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- ORACLE存储过程笔记1
ORACLE存储过程笔记1 一.基本语法(以及与informix的比较) create [or replace] procedure procedure_name (varible {IN|OUT ...
- ubuntu rpm 包安装使用
ubuntu安装rpm的方法RED HAT系列用rpm包安装软件,Debian系列得用deb包.毕竟red hat历史悠久,有很多rpm软件包还未对应deb格式.(对应的地方现在是越来越多)在网上找了 ...
- UVA 531 - Compromise(dp + LCS打印路径)
Compromise In a few months the European Currency Union will become a reality. However, to join th ...
- Android中如何查看内存(下)
实例1 int cnt=0; final static int kBufferMinSize=1000; final static int kBufferMaxSize=2000; StringBuf ...
- 多模块Maven项目怎样使用javadoc插件生成文档
需求 近期要对一个项目结构例如以下的Maven项目生成JavaDoc文档. Project |-- pom.xml ...