1 存储过程参数为VARCHAR

代码逻辑:controller层定义实体类对象entity,并entity.set给存储过程的输入参数赋值,把赋值后的实体类通过service层传到dao层,然后通过dao层调用存储过程

1-1 存储过程参数

IN_STR IN VARCHAR,
OUT_STR OUT VARCHAR

1-2 controller层

@RequestMapping("/TESTPRO")
@ResponseBody
public String TESTPRO() {
// 执行oracle存储过程
// 实体类中把输入参数输出参数都写上
//少写参数会报错:(wrong number or types of arguments in call to '存储过程')
HelloProEntity entity = new HelloProEntity();
entity.setIN_STR("1");// 配置输入参数
controllerService.GetTestPro(entity);// 把带输入参数的实体传到Service层,Service层调用Dao层,Dao层寻找实体对应的sql
try {
String str = entity.getOUT_STR();
return str;
} catch (Exception e) {
return "null";
}
}

1-3 service层

public HelloProEntity GetTestPro(HelloProEntity testproentity) {
return dao.GetTestPro(testproentity);
}

1-4 dao层

public HelloProEntity GetTestPro(HelloProEntity testproentity);

1-5 实体类

public class HelloProEntity implements Serializable {
private static final long serialVersionUID = -6556793741331167103L;
private String IN_STR;
private String OUT_STR; public String getIN_STR() {
return IN_STR;
} public void setIN_STR(String iN_STR) {
IN_STR = iN_STR;
} public String getOUT_STR() {
return OUT_STR;
} public void setOUT_STR(String oUT_STR) {
OUT_STR = oUT_STR;
} }

1-6 mapper

<select id="GetTestPro" parameterType="com.kh.zzkanban1.Entyties.HelloProEntity" useCache="false"
statementType="CALLABLE">
<![CDATA[
{call JCG_TEST(
#{IN_STR,mode=IN,jdbcType=VARCHAR},
#{OUT_STR,mode=OUT,jdbcType=VARCHAR}
)}
]]>
</select>

2 存储过程参数为DATE

基于第1点的配置,service层与dao层不需要改动,改动controller、实体类、mapper

主要注意的是:存储过程输入参数输出参数为DATE格式时,mapper定义jdbcType为DATE,实体类要用Timestamp格式定义属性,否则时分秒会变成00:00:00。

输出得到时间戳后,再用new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity.getM_GROUP_END())转成字符串格式的时间。

2-1 存储过程参数

M_DATETIME            IN DATE,
M_SEGMENT_BEGIN OUT DATE,
M_SEGMENT_END OUT DATE,
M_GROUP_BEGIN OUT DATE,
M_GROUP_END OUT DATE,
M_SEGMENT_NO OUT INTEGER,
M_GROUP_CODE OUT VARCHAR2,
RES OUT VARCHAR2

2-1 controller层

@RequestMapping("/GETPRO")
@ResponseBody
public PGetTimeSlotInfoEntity TESTPRO() throws SQLException {
PGetTimeSlotInfoEntity entity = new PGetTimeSlotInfoEntity();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);//获取当前时间的时间戳
entity.setM_DATETIME(ts);//以时间戳给输入的DATE参数赋值
service.GetPro(entity);
return entity;
}

2-2 实体类

public class PGetTimeSlotInfoEntity implements Serializable {
private static final long serialVersionUID = -6556793741331167103L;
private Timestamp M_DATETIME;
private Timestamp M_SEGMENT_BEGIN;// 这里不用Date,应为传不了时分秒
private Timestamp M_SEGMENT_END;
private Timestamp M_GROUP_BEGIN;
private Timestamp M_GROUP_END;
private String M_SEGMENT_NO;
private String M_GROUP_CODE;
private String RES; public Timestamp getM_DATETIME() {
return M_DATETIME;
} public void setM_DATETIME(Timestamp m_DATETIME) {
M_DATETIME = m_DATETIME;
} public Date getM_SEGMENT_BEGIN() {
return M_SEGMENT_BEGIN;
} public void setM_SEGMENT_BEGIN(Timestamp m_SEGMENT_BEGIN) {
M_SEGMENT_BEGIN = m_SEGMENT_BEGIN;
} public Date getM_SEGMENT_END() {
return M_SEGMENT_END;
} public void setM_SEGMENT_END(Timestamp m_SEGMENT_END) {
M_SEGMENT_END = m_SEGMENT_END;
} public Timestamp getM_GROUP_BEGIN() {
return M_GROUP_BEGIN;
} public void setM_GROUP_BEGIN(Timestamp m_GROUP_BEGIN) {
M_GROUP_BEGIN = m_GROUP_BEGIN;
} public Timestamp getM_GROUP_END() {
return M_GROUP_END;
} public void setM_GROUP_END(Timestamp m_GROUP_END) {
M_GROUP_END = m_GROUP_END;
} public String getM_SEGMENT_NO() {
return M_SEGMENT_NO;
} public void setM_SEGMENT_NO(String m_SEGMENT_NO) {
M_SEGMENT_NO = m_SEGMENT_NO;
} public String getM_GROUP_CODE() {
return M_GROUP_CODE;
} public void setM_GROUP_CODE(String m_GROUP_CODE) {
M_GROUP_CODE = m_GROUP_CODE;
} public String getRES() {
return RES;
} public void setRES(String rES) {
RES = rES;
} }

2-3 mapper

    <select id="GetPro" parameterType="com.kh.zzkanban1.Entyties.PGetTimeSlotInfoEntity" useCache="false"
statementType="CALLABLE">
<![CDATA[
{call P_GET_TIME_SLOT_INFO(
#{M_DATETIME,mode=IN,jdbcType=DATE},
#{M_SEGMENT_BEGIN,mode=OUT,jdbcType=DATE},
#{M_SEGMENT_END,mode=OUT,jdbcType=DATE},
#{M_GROUP_BEGIN,mode=OUT,jdbcType=DATE},
#{M_GROUP_END,mode=OUT,jdbcType=DATE},
#{M_SEGMENT_NO,mode=OUT,jdbcType=INTEGER},
#{M_GROUP_CODE,mode=OUT,jdbcType=VARCHAR},
#{RES,mode=OUT,jdbcType=VARCHAR}
)}
]]>
</select>

springboot+mybatis调用oracle存储过程的更多相关文章

  1. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析

    首先根据这篇文章:http://www.cnblogs.com/coolzdp/p/7717332.html 我们知道存储过程中 SELECT * INTO 如果没有记录是不会往下执行的,直接抛出NO ...

  3. mybatis调用oracle存储过程的几个参考例子

    首先写一个存储过程: create or replace procedure p_syn_equipment_20161205 is sqlstr ); begin --清空表 sqlstr := ' ...

  4. mybatis 调用oracle存储过程如何返回out参数值

    调试了半天,其实整体用map传入传出也挺简单, 主要是调用存储过程 select标签里平时习惯不写 statementType="CALLABLE",调用没有out参数时也能正常用 ...

  5. mybatis调用oracle存储过程例子.

    1.MYBATIS方法: <select id="getFlowNum" statementType="CALLABLE"> <![CDATA ...

  6. mybatis调用oracle存储过程 out游标类型参数 如何赋给java map

    <resultMap id="ticketInfosResultMap" type="Map"> <!--result要是默认用列名的话完全不 ...

  7. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  8. Mybatis调用PostgreSQL存储过程实现数组入参传递

    注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于Pos ...

  9. C#调用Oracle存储过程

    C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.Obje ...

随机推荐

  1. iOS-VideoToolbox硬编码H264

    前言 VideoToolBox是iOS8之后,苹果开发的用于硬解码编码H264/H265(iOS11以后支持)的API. 对于H264还不了解的童鞋一定要先看下这边的H264的简介. 编码流程 我们实 ...

  2. CLR 虚方法调用和接口方法调用

    不知接口方法和虚方法分发有什么区别?似乎在CIL中都是callvirt指令. 对,MSIL里都是callvirt,但JIT的时候得到了不同的处理:对虚方法的分发是编译成这样: mov  ecx, es ...

  3. TPCH测试工具

    TPC现有的测试标准为:TPC-E.TPC-C.TPC-H.TPC-App.根据这4个测试基准,目前TPC主要包括的4个技术小组委员会:TPC-E 技术小组委员会.TPC-C 技术小组委员会.TPC- ...

  4. 如何单独编译Linux内核的某个模块?

    1. 配置该模块为[M] 2. 编译 make modules SUBDIRS=./drivers/rtc (5.3的内核为make modules M=./drivers/rtc) 3. 安装 ma ...

  5. centos出现磁盘坏道,怎么检索和修复

    故障现象,在/var/log/message这个目录中出现下面的error: [ [ [ [ [ [ [ [ [ [ dmesg的输出结果也是上面的error. 1.检测下坏道,将结果保存在bb.lo ...

  6. qt ui

    /******************************************************************************** ** Form generated ...

  7. iOS- 推送消息

    1 ios 如何判断是点击推送信息进入还是点击app图标进入程序? 设备接到apns发来的通知,应用处理通知有以下几种情况: 1. 应用还没有加载 这时如果点击通知的显示按钮,会调用didFinish ...

  8. python进阶-mock接口

    setting.py MYSQL_HOST='192.168.127.139' PASSWORD=' PORT=3306 USER='root' DB='stu' tools.py import py ...

  9. 使用 bash 脚本把 GCE 的数据备份到 GCS

    目录 一.Google Cloud Storge 介绍 1.1.四种存储类别的比较 1.2.需求 1.3.给虚拟机添加授权认证 二.备份操作 2.1 创建存储分区 2.2 上传对象到存储分区 2.3 ...

  10. php redis mysql apache 下载地址

    Mysql:https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz php:ht ...