SpringBoot调用存储过程(入参,返参)(亲测有效!!!)

news2024/11/19 7:31:15

存储过程和函数是有区别的!!!

创建函数,只是演示,以下函数不完整!!!(只是看P_xxx参数)

CREATE OR REPLACE PROCEDURE SP_TICKET_CHECKE_ONLINE_TEST (p_transcode       IN OUT VARCHAR2,
                                            p_ip              IN OUT VARCHAR2,
                                            p_barcode         VARCHAR2,
                                            p_managercard     VARCHAR2,
                                            p_checkdatetime   VARCHAR2,
                                            p_haspic          OUT VARCHAR2,
                                            p_rescode         OUT VARCHAR2,
                                            p_resmsg          OUT VARCHAR2,
																						p_transdata       OUT VARCHAR2,
																						p_orderno         OUT VARCHAR2,
                                            p_pricename       OUT VARCHAR2) AS
  v_transcode        VARCHAR2(4);
  v_ip               VARCHAR2(15);
  v_terminalnum      VARCHAR2(30);
  v_barcode          VARCHAR2(25);
  --v_visitorbar     VARCHAR2(25);
  v_managercard      VARCHAR2(30);
  v_checkdatetime    VARCHAR2(20);
  v_syscheckdatetime VARCHAR2(14);
  v_syscheckdate     VARCHAR2(8);
  v_syschecktime     VARCHAR2(6);
  v_bardate          VARCHAR2(8);
  v_barprice         VARCHAR2(6);
  v_priceid    VARCHAR2(16);
  v_pricenum         NUMBER;
  v_haspic           VARCHAR2(1);
  v_barnum           NUMBER;
  v_managernum       NUMBER;
  v_status             VARCHAR2(1);
  v_munitid1         VARCHAR2(15);
  v_merid          VARCHAR2(15);
  v_pacid            VARCHAR2(7);
  v_scenicid         VARCHAR2(15);
  v_scenicids        VARCHAR2(1000);
  v_scenicids_temp   VARCHAR2(1000);
  v_scen_has         NUMBER;
  v_ischeck          NUMBER;
  v_barmunitid       VARCHAR2(15);
  v_pricename        VARCHAR2(100);
  v_hasterminal      NUMBER;
  v_operUser         VARCHAR2(20);    -- 操作员编码;
  v_userID           VARCHAR2(20);
  v_tag              VARCHAR2(12);
  v_checkDoor        VARCHAR2(8);
  v_date             VARCHAR2(10);
  v_time             VARCHAR2(8);
  v_id_card          VARCHAR2(20);    -- 证件号码
  v_barEndDate          VARCHAR2(8);  --2预售票时间段 票结束日期
  v_ticketType          VARCHAR2(1);  --票类型1日历票2预售票3普通票 默认3
	v_createData          VARCHAR2(8);  --票类型1日历票2预售票3普通票 默认3
	v_recsn               VARCHAR2(50);  --票类型1日历票2预售票3普通票 默认3
	v_orderno               VARCHAR2(50);  --票类型1日历票2预售票3普通票 默认3
BEGIN

  v_haspic:='0';
  v_date := TO_CHAR(SYSDATE, 'YYYYMMDD');
  v_time := TO_CHAR(SYSDATE, 'HH24MISS');
  v_transcode        := TRIM(p_transcode);
  v_barcode          := TRIM(p_barcode);
  v_ip               := TRIM(p_ip);
  v_managercard      := TRIM(p_managercard);
  v_barnum           := 0;
  v_checkdatetime    := TRIM(p_checkdatetime);
  v_syscheckdatetime := TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS');
  v_syscheckdate     := SUBSTR(v_syscheckdatetime,0,8);
  v_syschecktime     := SUBSTR(v_syscheckdatetime,9,6);
  v_pricename        := '';
  v_checkDoor        := '';
  v_createData       := '';
	v_recsn						 := '';
	v_orderno          := '';

mapper层,不需要返回实体对象。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jiewen.pgw.dao.CheckDoorMapper">

    <select id="checkTicket" statementType="CALLABLE">
        {call SP_TICKET_CHECKE_ONLINE_TEST(
        #{p_transcode, mode=INOUT, jdbcType=VARCHAR},
        #{p_ip, mode=INOUT, jdbcType=VARCHAR},
        #{p_barcode, mode=IN, jdbcType=VARCHAR},
        #{p_managercard, mode=IN, jdbcType=VARCHAR},
        #{p_checkdatetime, mode=IN, jdbcType=VARCHAR},
        #{p_haspic, mode=OUT, jdbcType=VARCHAR},
        #{p_rescode, mode=OUT, jdbcType=VARCHAR},
        #{p_resmsg, mode=OUT, jdbcType=VARCHAR},
        #{p_transdata, mode=OUT, jdbcType=VARCHAR},
        #{p_orderno, mode=OUT, jdbcType=VARCHAR},
        #{p_pricename, mode=OUT, jdbcType=VARCHAR}
        )}
    </select>
</mapper>

dao层

@Mapper
public interface CheckDoorMapper {
    void checkTicket(Map<String, Object> params);
}

 server层

public interface CheckDoorService {
	void checkTicket(Map<String, Object> params);
}

serverimpl层

@Service
public class CheckDoorServiceImpl implements CheckDoorService {

	@Autowired
	private CheckDoorMapper checkDoorMapper;

	@Override
	public void checkTicket(Map<String, Object> params) {
		checkDoorMapper.checkTicket(params);
	}
}

controller层

            Map<String, Object> params = new HashMap<>();
			params.put("p_transcode", request.getTransCode());
			params.put("p_ip", request.getAddr());
			params.put("p_barcode", request.getBarCode());
			params.put("p_managercard", null);
			params.put("p_checkdatetime", DateTimeUtil.getSystemDate());

            //调用函数 通过map来传参数
			checkDoorService.checkTicket(params);

            //接收函数返回的信息
			String p_haspic = (String) params.get("p_haspic");
			String p_rescode = (String) params.get("p_rescode");
			String p_resmsg = (String) params.get("p_resmsg");
			String p_pricename = (String) params.get("p_pricename");
			String p_transcode = (String) params.get("p_transcode");
			String p_ip = (String) params.get("p_ip");
			String p_barcode = (String) params.get("p_barcode");

			System.out.println("p_haspic: " + p_haspic);
			System.out.println("p_rescode: " + p_rescode);
			System.out.println("p_resmsg: " + p_resmsg);
			System.out.println("p_pricename: " + p_pricename);
			System.out.println("p_transcode: " + p_transcode);
			System.out.println("p_ip: " + p_ip);
			System.out.println("p_barcode: " + p_barcode);
			System.out.println("oper: " + request.getOper());

最后输出结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java反射获取抽象类方法属性问题讲解

Java反射获取抽象类方法属性问题讲解 结论一、案例准备二、测试方法&#xff1a;使用反射获取抽象类私有方法和私有属性具体操作&#xff08;获取私有方法&#xff09;具体操作&#xff08;获取私有属性&#xff09; 结论 Java 通过反射可以获得抽象类的任何修饰符&#xff08…

Vue2 Watch的语法

Watch语法 一、监听普通数据类型&#xff08;1&#xff09;把要监听的msg值看作方法名&#xff0c;来进行监听。&#xff08;2&#xff09;把要监听的msg值看作对象&#xff0c;利用hanler方法来进行监听 二、监听对象&#xff1a;&#xff08;1&#xff09;监听对象需要用到深…

LeetCode【300】最长递增子序列

题目&#xff1a; 思路&#xff1a; 通常来说&#xff0c;子序列不要求连续&#xff0c;而子数组或子字符串必须连续&#xff1b;对于子序列问题&#xff0c;第一种动态规划方法是&#xff0c;定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个…

1808_ChibiOS基本的架构介绍

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 简单看了一下ChibiOS的架构介绍&#xff0c;感觉这种OS以及组件非常适合快速构建一个应用。这里做一个简单的资料整理。。 1. 不同于其他的OS&#…

TCP/IP(九)TCP的连接管理(六)TIME_WAIT状态探究

一 TIME_WAIT探究 要明确TIME_WAIT状态在tcp四次挥手的阶段 ① 为什么 TIME_WAIT 等待的时间是 2MSL? 背景&#xff1a; 客户端在收到服务端第三次FIN挥手后,就会进入TIME_WAIT 状态,开启时长为2MSL的定时器1、MSL 是 Maximum Segment Lifetime 报文最大生存时间2、2MSL…

4.(vue3.x+vite)style动态绑定的方式

前端技术社区总目录(订阅之前请先查看该博客) 效果浏览 代码如下: <template><div><div :style="{

改造Vue-admin-template登录

这是是将Vue-admin-template改为登录自己的&#xff0c;拿自己的数据&#xff0c;原作者是gitee花裤衩或者github devServer: {proxy: {/dev-api: {target: http://localhost:8035,changeOrigin: true,pathRewrite: {^/dev-api: }}} }, main.js如下 import Vue from vueimpor…

VMware虚拟机安装Linux教程(图文超详细)

1.安装VMware 官方正版VMware下载地址 https://www.vmware.com/ 双击安装 以上就是VMware在安装时的每一步操作&#xff0c;基本上就是点击 "下一步" 一直进行安装。 2.安装Linux VMware虚拟机安装完毕之后&#xff0c;我们就可以打开VMware&#xff0c;并在上面来…

validator库的使用详解

TOC 基本使用 前言 在做API开发时&#xff0c;需要对请求参数的校验&#xff0c;防止用户的恶意请求。例如日期格式&#xff0c;用户年龄&#xff0c;性别等必须是正常的值&#xff0c;不能随意设置。以前会使用大量的if判断参数的值是否符合规范&#xff0c;现在可以使用val…

电脑如何查看是否支持虚拟化及如何开启虚拟化

什么是虚拟化? Intel Virtualization Technology就是以前众所周知的“Vanderpool”技术&#xff08;简称VT&#xff0c;中文译为虚拟化技术&#xff09;&#xff0c;这种技术可以让一个CPU工作起来就像多个CPU并行运行&#xff0c;从而使得在一部电脑内同时运行多个操作系统成…

rabbitmq-----黑马资料

rabbit的三种发送订阅模式 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送时丢失&#xff1a;生产者发送的消息未送达exchange消息到达exchange后未到达queueMQ…

使用Python进行食品配送时间预测

一般的食品配送服务需要显示交付订单所需的准确时间&#xff0c;以保持与客户的透明度。这些公司使用机器学习算法来预测食品配送时间&#xff0c;基于配送合作伙伴过去在相同距离上花费的时间。 食品配送时间预测 为了实时预测食物的交付时间&#xff0c;我们需要计算食物准…

[安洵杯 2019]easy_web - RCE(关键字绕过)+md5强碰撞+逆向思维

[安洵杯 2019]easy_web 1 解题流程1.1 阶段一1.2 阶段二2 思考总结1 解题流程 1.1 阶段一 1、F12发现提示md5 is funny ~;还有img标签中,有伪协议和base64编码 2、url地址是index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=   这就有意思了,这里的img明显是编码后的…

如何给苹果ipa和安卓apk应用APP包体修改手机屏幕上logo图标iocn?

虽然修改应用文件图标是一个简单的事情&#xff0c;但是还是有很多小可爱是不明白的&#xff0c;你要是想要明白的话&#xff0c;那我就让你今天明白明白&#xff0c;我们今天采用的非常规打包方式&#xff0c;常规打包方式科技一下教程铺天盖地&#xff0c;既然小弟我出马&…

阿里云华中1(武汉)本地地域公网带宽价格表

阿里云华中1&#xff08;武汉&#xff09;地域上线&#xff0c;本地地域只有一个可用区A&#xff0c;高可用需要多可用区部署的应用&#xff0c;不建议选择本地地域&#xff0c;可以选择上海或杭州地域&#xff0c;阿里云服务器华中1&#xff08;武汉&#xff09;地域公网带宽价…

windows下开启Telnet功能并访问百度

Telnet 是一个实用的远程连接命令&#xff0c;采用的是 TCP/IP 协议。它为用户提供了在本地计算机上完成远程主机工作的能力&#xff0c;在终端使用者的电脑上使用 Telnet 程序&#xff0c;用它连接到服务器。终端使用者可以在 Telnet 程序中输入命令&#xff0c;这些命令会在服…

并购交易:纽交所上市公司Alamo Group宣布收购皇家卡车设备公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;纽交所上市公司Alamo Group(ALG)周二宣布已收购皇家卡车设备公司(Royal Truck & Equipment)。 皇家卡车设备公司在2022年的年收入接近4000万美元&#xff0c;截至2023年8月底&#xff0c;该公…

Linux python运维

Python 是一种高级编程语言&#xff0c;它具有简单易学、可移植性强、丰富的第三方库等特点&#xff0c;因此成为了广泛应用于各个领域的编程语言之一。而在 Linux 系统中&#xff0c;Python 的使用也十分普遍。本文将介绍如何在 Linux 系统中执行 Python 脚本并传入参数&#…

Ajax使用流程

Ajax在不刷新页面的情况下&#xff0c;进行页面局部更新。 Ajax使用流程&#xff1a; 创建XmlHttpReqeust对象发送Ajax请求处理服务器响应 1. 创建XmlHttpReqeust对象 XmlHttpReqeust对象是Ajax的核心&#xff0c;使用该对象发起请求&#xff0c;接收响应 不同的浏览器创建…

【网路安全 --- Linux,window常用命令】网络安全领域,Linux和Windows常用命令,记住这些就够了,收藏起来学习吧!!

一&#xff0c;Linux 1-1 重要文件目录 1-1-1 系统运行级别 /etc/inittab 1-1-2 开机启动配置文件 /etc/rc.local /etc/rc.d/rc[0~6].d## 当我们需要开机启动自己的脚本时&#xff0c;只需要将可执行脚本丢在 /etc/init.d 目录下&#xff0c;然后在 /etc/rc.d/rc*.d 中建…