文章目录

  • 1. 使用Map封装入参、出参数据
  • 2. 使用对象封装入参、出参数据

存储过程如下:

传入开始、结束日期,并返回对应日期内的数据!

create or replace PROCEDURE PROC_GETGONGGUREPORT(in_beginDate Date, //入参:开始日期in_endDate Date, //入参:结束日期cursor_out out sys_refcursor    //出参:游标
)
AS in_nextDate date :=in_endDAte +1;BEGIN
。。。。//省略代码

1. 使用Map封装入参、出参数据

Controller:

    @RequestMapping("/getNoCarInfo")@ResponseBodypublic R TESTPRO2(@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "endTime", required = false) String endTime) throws ParseException {HashMap map = new HashMap();map.put("in_beginDate", startTime); //入参:开始日期map.put("in_endDate", endTime);    //入参:结束日期map.put("cursor", null);  //出参:游标nocarService.getNocarInfo(map); //调用存储过程System.out.println(map.get("cursor") + "***************");List<Map> returnMap = (List<Map>) map.get("cursor"); //以map的形式获取结果

Service

@Service
public class NocarService {@AutowiredNocarDao nocarDao;public void getNocarInfo(HashMap map){nocarDao.getNocarInfo(map);}
}

Dao

@Mapper
public interface NocarDao {void getNocarInfo(@Param("map") HashMap map);
}

XML文件

<?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.chinalife.renshang.nocar.NocarDao"><!--游标结果封装 --><resultMap id="cursorNocarMap" type="java.util.LinkedHashMap"></resultMap><!--调用存储过程 --><select id="getNocarInfo" statementType="CALLABLE" parameterType="map"><![CDATA[call PROC_GETGONGGUREPORT(to_date( #{map.in_beginDate,mode=IN,jdbcType=DATE},'yyyy-MM-dd'),to_date(#{map.in_endDate,mode=IN,jdbcType=DATE},'yyyy-MM-dd'),#{map.cursor,mode=OUT,jdbcType=CURSOR,resultMap=cursorNocarMap})]]></select></mapper>

调用结果:

2. 使用对象封装入参、出参数据

对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestParam {private Date in_beginDate;  //入参:开始日期private Date in_endDate;    //入参:结束日期private List<Map> cursor; //出参:游标
}

Controller

    @RequestMapping("/getCarInfo")@ResponseBodypublic R getCarInfo(@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "endTime", required = false) String endTime) throws ParseException {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date start = format.parse(startTime);Date end = format.parse(endTime);//封装对象TestParam testParam = new TestParam(start, end, null);//调用存储过程carService.getCarInfo1(testParam);List<Map> carMap = testParam.getCursor();

Dao

@Mapper
public interface CarDao {void getCarInfo1(@Param("testParam")TestParam testParam);
}

XML文件

<?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.chinalife.renshang.car.CarDao"><resultMap id="cursorCarMap" type="java.util.LinkedHashMap"></resultMap><!--调用存储过程 --><select id="getCarInfo1" statementType="CALLABLE" parameterType="com.chinalife.renshang.car.TestParam" ><![CDATA[call PROC_GETGONGGUREPORT(#{testParam.in_beginDate,mode=IN,jdbcType=DATE},#{testParam.in_endDate,mode=IN,jdbcType=DATE},#{testParam.cursor,mode=OUT,jdbcType=CURSOR,resultMap=cursorNocarMap})]]></select></mapper>

同样可以调用成功

Mybatis如何调用oracle存储过程?入参为日期类型相关推荐

  1. spring+springMvc+mybatis 调用oracle 存储过程

    最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...

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

    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...

  3. SQL那些事儿(十四)--C#调用oracle存储过程(查询非查询and有参无参)深度好文

    最近老总让使用存储过程,说这个比较好用,抓起本oracle书看了看,写存储过程不是很难,但是写了存储过程调用的时候遇到许多问题,经过一天时间,把各种能遇到i的问题基本总结了下,跟大家分享. 照例画了张 ...

  4. java调用存储过程 oracle_java调用oracle存储过程

    java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...

  5. python调用oracle存,Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法.分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL. 首先,在数据库端 ...

  6. c# 调用oracle存储过程(参数类型不对)排坑之BindByName参数

    介绍:Oracle.ManagedDataAccess.dll c# ado调用oracle存储过程报错(参数类型不对.顺序不对等等问题),只需要加上BindByName=true即可,使用微软自带的 ...

  7. C#调用Oracle存储过程分页

    直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库 端存储过程PLSQL代码. //    程序调用示例: // int tota ...

  8. 关于调用Oracle存储过程时发生“BCD Overflow”错误的处理

    笔者最近在使用TSQLStoredProc调用Oracle存储过程时发现,即使存储过程体为空时,都会发生 BCD Overflow 错误,该表部分定义如下: PLANE_ALL_PARAMETER表: ...

  9. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

最新文章

  1. Web开发者需养成的好习惯
  2. C语言实现一种简单的应用服务器内部数据结构的思路(三)
  3. 扩展thinkphp5的redis类方法
  4. 轻松掌控全链路监控:方案概述与对比 | 真的很干!
  5. python批量删除注释_批量删除C和C++注释
  6. 带父节点的平衡二叉树_深入理解(二叉树、平衡二叉树、B-Tree、B+Tree )的区别
  7. 机器人无限火力无限e符文_LOL:无限火力开黑指南 三大玩法让你快乐加倍
  8. Flutter PageView 属性使用详解
  9. golang垃圾回收MySQL_Go语言垃圾回收和SetFinalizer
  10. 神经网络API、Kotlin支持,那些你必须了解的Android 8.1预览版和Android Studio 3.0新特性
  11. python花式输出_关于python字符串format的一些花式用法
  12. difference between match and exec
  13. matlab节约里程法_新手求大神指导,MATLAB中怎么使用节约里程法
  14. java nio ByteBuffer的使用
  15. .woff2/svg/woff文件报404错误
  16. 在线评判系统java代码_sojV1.0 Online Judge System 在线评判系统是一个 联合开发网 - pudn.com...
  17. jquery广告浮动插件
  18. DEDECMS留言薄全站调用方法
  19. Chapter04 编写基本的MapReduce程序(一) 专利数据集实战一
  20. 论文笔记:CLIP:Learning Transferable Visual Models From Natural Language Supervision详解

热门文章

  1. 解决Ubuntu18.04 No wifi adapter found
  2. 如何查看文件的字符集
  3. Linux的目录结构与磁盘分区
  4. 类Array对象中是否该直接使用Array的原型方法?
  5. ABAP和Java单例模式的攻防
  6. YII 规则rule 里面 min,max 提示错误信息
  7. [转]计算机视觉之跟踪算法——相关滤波器Correlation Filter
  8. ambassador 学习七 Mapping说明
  9. linux命令行快捷命令及vim常用快捷命令
  10. WebRequest之HttpWebRequest实现服务器上文件的下载(一)