详解java调用存储过程并封装成map
时间:2019-04-01
本文章向大家介绍详解java调用存储过程并封装成map,主要包括详解java调用存储过程并封装成map使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
详解java调用存储过程并封装成map
本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家,
实例代码:
public List<Map<String , Object>> doCallProcedure(String procedureString,String[] parameters) throws PersistentDataOperationException { if (!isReady ()) { throw new PersistentDataOperationException( "DAO is not ready."); } ResultSet rs = null; List<Map< String, Object>> list = new ArrayList<Map<String ,Object>>(); try { Connection con=session.connection(); String procedure = "{call "+procedureString+ "(?,?,?) }"; //拼装调用存储过程字符串 CallableStatement cstmt = con.prepareCall (procedure ); //调用存储过程 cstmt.setString (1,parameters [0 ]); //设置入参 cstmt.setInt (2, Integer. parseInt( parameters[ 1])) ;//设置入参 cstmt.registerOutParameter (3, oracle.jdbc.OracleTypes.CURSOR ); //设置出参 cstmt.execute (); //执行提交 rs = (ResultSet ) cstmt.getObject (3 ); //获取出参,3为参数顺序数 ResultSetMetaData rsm =rs.getMetaData (); //获得列集 Map< String, Object> map= null; int col = rsm.getColumnCount (); //获得列的个数 String colName [] = new String[ col] ;//列名集合 for (int i = 0; i < col; i++) { colName [i ] = rsm.getColumnName (i+1 ); } while( rs.next()){ //注意访问结果集是从索引位置1开始的,而不是0 map = new HashMap< String, Object> (); for (int j = 0; j < colName.length; j++) { map.put (colName [j ], rs.getString (j+1 )); } list.add (map ); } session.flush (); } catch (HibernateException e) { throw new PersistentDataOperationException( e) ; } catch (SQLException e) { e.printStackTrace (); } return list; }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
- Spring的事务传播行为
- Jquery 获取checkbox属性checked为undefined和改变状态 值不变
- Hibernate--Criteria Query and DetachedCriteria
- Python3 大作战之 encode 与 decode 讲解
- SpringMVC 文件下载时 浏览器不能正确显示另存的文件名
- 手把手教你用python抢火车票
- SpringMVC 实现多文件上传的两种方式及其效率比较
- Spring 之加载配置属性文件和注解属性绑定
- SpringMVC 提交表单400 Bad Request
- 如何在三年内快速成长为一名技术专家
- 【微信开发】getAccessToken 和 getJsapi_ticket缓存支持
- 微信JS-SDK 注入权限验证配置
- Maven 项目下slf4j 包冲突问题
- 谷歌教你学 AI-第三讲简单易懂的估算器
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- A Java Fork/Join Framework(Doug Lea 关于java Fork/Join框架的论文翻译)
- Mysql 的安装
- Spring系列之数据源的配置 数据库 数据源 连接池的区别
- STM32F4 SPI DMA
- 快速学习-XXL-JOB总体设计
- Android中Input事件初始化、接收以及分发
- 快速学习-XXL-JOB操作指南
- 快速学习-XXL-JOB任务详解
- PyQt5 技术篇-scrollArea不显示滚动条解决方法。Qt Designer不显示滚动条。滚动条的显示和隐藏。
- Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量
- Redis的各种数据类型实践-ZSet
- Python 技术篇-将python项目打包成exe独立运行程序,pyinstaller库打包python代码
- Spring MVC 工作流程简介
- 8个尽量优化你的SQL
- 记一次 Kafka Producer 性能调优实战