Mybatis如何调用oracle存储过程?入参为日期类型
文章目录
- 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存储过程?入参为日期类型相关推荐
- spring+springMvc+mybatis 调用oracle 存储过程
最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...
- mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...
- SQL那些事儿(十四)--C#调用oracle存储过程(查询非查询and有参无参)深度好文
最近老总让使用存储过程,说这个比较好用,抓起本oracle书看了看,写存储过程不是很难,但是写了存储过程调用的时候遇到许多问题,经过一天时间,把各种能遇到i的问题基本总结了下,跟大家分享. 照例画了张 ...
- java调用存储过程 oracle_java调用oracle存储过程
java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...
- python调用oracle存,Python使用cx_Oracle调用Oracle存储过程的方法示例
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法.分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL. 首先,在数据库端 ...
- c# 调用oracle存储过程(参数类型不对)排坑之BindByName参数
介绍:Oracle.ManagedDataAccess.dll c# ado调用oracle存储过程报错(参数类型不对.顺序不对等等问题),只需要加上BindByName=true即可,使用微软自带的 ...
- C#调用Oracle存储过程分页
直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库 端存储过程PLSQL代码. // 程序调用示例: // int tota ...
- 关于调用Oracle存储过程时发生“BCD Overflow”错误的处理
笔者最近在使用TSQLStoredProc调用Oracle存储过程时发现,即使存储过程体为空时,都会发生 BCD Overflow 错误,该表部分定义如下: PLANE_ALL_PARAMETER表: ...
- oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...
java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...
最新文章
- Web开发者需养成的好习惯
- C语言实现一种简单的应用服务器内部数据结构的思路(三)
- 扩展thinkphp5的redis类方法
- 轻松掌控全链路监控:方案概述与对比 | 真的很干!
- python批量删除注释_批量删除C和C++注释
- 带父节点的平衡二叉树_深入理解(二叉树、平衡二叉树、B-Tree、B+Tree )的区别
- 机器人无限火力无限e符文_LOL:无限火力开黑指南 三大玩法让你快乐加倍
- Flutter PageView 属性使用详解
- golang垃圾回收MySQL_Go语言垃圾回收和SetFinalizer
- 神经网络API、Kotlin支持,那些你必须了解的Android 8.1预览版和Android Studio 3.0新特性
- python花式输出_关于python字符串format的一些花式用法
- difference between match and exec
- matlab节约里程法_新手求大神指导,MATLAB中怎么使用节约里程法
- java nio ByteBuffer的使用
- .woff2/svg/woff文件报404错误
- 在线评判系统java代码_sojV1.0 Online Judge System
在线评判系统是一个 联合开发网 - pudn.com...
- jquery广告浮动插件
- DEDECMS留言薄全站调用方法
- Chapter04 编写基本的MapReduce程序(一) 专利数据集实战一
- 论文笔记:CLIP:Learning Transferable Visual Models From Natural Language Supervision详解