Mybatis传 ARRAY给Oracle存储过程
时间:2022-06-21
本文章向大家介绍Mybatis传 ARRAY给Oracle存储过程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 首先建立相关的存储过程,如图:
2.在service实现层填充参数 例如:
@Override
public Dto addFloorList(BannerRequest req)
{
Dto dto = new Dto();
List<IndexFloor> list = new ArrayList<IndexFloor>();
for (int i = 0; i < 3; i++)
{
IndexFloor flr = new IndexFloor();
flr.setFloorId(i + 3);
flr.setFloorTitle("测试数据 " + i + 1);
flr.setFlrSort(i + 1);
flr.setFlrCat(2);
list.add(flr);
}
Map<String, Object> param = new HashMap<String, Object>();
param.put("id", 2);
param.put("floor_list", list);
//调用存储过程
webMapper.spInsertInfo(param);
int rtnCode = (Integer) param.get("rtnCode");
String rtnMsg = String.valueOf(param.get("rtnMsg"));
System.out.print(rtnCode + "------" + rtnMsg);
3.编写工具类,用来处理Array参数:
核心代码如下(详见附件中的 handler/ArrayHandler.java):
(注意:上图中的IndexFloor为测试bean。具体bean对象,根据需要编写)
4.在MyBatis配置文件中,配置,handler为我们写好的工具类:
配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 自定义传入参数类型(TypeHandler) -->
<typeHandlers>
<!-- 如果没有在Handler中加注解,用第一个 -->
<!--<typeHandler javaType="list" jdbcType="ARRAY" handler="cn.hao24.api.handler.ArrayHandler"/>-->
<typeHandler javaType="list" handler="cn.hao24.api.handler.ArrayHandler" />
</typeHandlers>
</configuration>
5.在Mapper.xml文件中调用存储过程并传参数:
<select id="spInsertInfo" parameterType="Map" resultType="Map" statementType="CALLABLE">
call TMP_LUJIE_TEST_ARRAY
(
#{rtnCode,mode=OUT,jdbcType=INTEGER,javaType=Integer},
#{rtnMsg,mode=OUT,jdbcType=VARCHAR,javaType=String},
#{id,mode=IN,jdbcType=INTEGER,javaType=Integer},
** #{floor_list,jdbcType=ARRAY,javaType=list}**
)
</select>
6.调试代码。
参考资料:
1.how-to-pass-java-list-of-objects-to-oracle-stored-procedure-using-mybatis:
2. myBatis自定义传入参数类型(TypeHandler)
http://jusesgod.iteye.com/blog/1740889
- 什么是人?人工智能的发展已经逼迫人类思考这样的问题
- 加法生产
- Web 前端利器Emmet 的HTML用法总结
- Web 前端利器Emmet 的CSS 用法总结
- 响应式 HTML 邮件制作之三个实例
- java知识点归纳
- EaseMobile 主题导航菜单设置小图标的方法(图文+视频教程)
- NEC css规范
- DW Mobile Switcher:移动设备识别切换主题插件
- 揭秘技术大国以色列
- mix-blend-mode 混合模式 background-blend-mode 背景混合模式 isolation:isolate 隔离
- wp_nav_menu 函数经Walker_Nav_Menu 类自定义导航菜单HTML
- css3 RGBA 红色R+绿色G+蓝色B+Alpha通道
- css3 gradient 渐变
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2.02-request_header_two
- Centos安装Python3
- 2.03-handler_openner
- 2.04-proxy-handler
- 图形验证码的识别
- 2.05-random-uesr-proxy
- 5.01-requests_auth
- Git分支操作
- 5.02-requests_proxy
- 5.03-requests_ssl
- 5.04-requests_cookies
- 通过 Node.js 小示例学习浏览器缓存策略
- [未解决]报错: execjs._exceptions.ProgramError: TypeError: Cannot read property 'extend' of undefined
- 5.05-requests_cookies2
- 5.06-re