- 浏览: 1777753 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (723)
- IE 国际化 (1)
- java (310)
- python (52)
- Spring (101)
- eclipse (43)
- birt (10)
- exe4j (1)
- ActiveMQ (3)
- HornetQ (7)
- Ext (16)
- Linux (50)
- james (1)
- mail (3)
- 经验 (288)
- tomcat (5)
- Netty (3)
- ant (6)
- rsync (2)
- MD5 (3)
- 正则表达式 (3)
- 非技术 (59)
- mysql (28)
- sftp (1)
- Commons (2)
- oracle (3)
- vsftp (1)
- jdoc (1)
- socket (3)
- SEDA (2)
- UUID (1)
- quartz (7)
- javascript (50)
- sql (5)
- array (3)
- POI (3)
- redis (2)
- junit (4)
- 二维码 (1)
- jdk (8)
- h2 (6)
- maven (37)
- JVM (5)
- html (4)
- css (1)
- excel (4)
- myeclipse (2)
- scala (0)
- jQuery (5)
- log (10)
- slf4j (2)
- log4j (9)
- REST (15)
- guava (18)
- Joda-Time (7)
- ini4j (1)
- 配置文件 (2)
- lucene (1)
- database (3)
- curator (2)
- zookeeper (3)
- 并发 (2)
- jetty (6)
- ehcache (5)
- windows (1)
- protobuf (1)
- select2 (2)
- easyui (10)
- Freemarker (1)
- Filter (1)
- twisted (1)
- DateTime (11)
- mockrunner (1)
- DataSource (4)
- ajax (1)
- shell (18)
- powermockito (5)
- json (5)
- lombok (1)
- jointjs (1)
- cookie (1)
- mybatis (11)
- 加密解密 (2)
- 安全 (2)
- web (1)
- notepad++ (3)
- mac (48)
- sublime (14)
- git (7)
- docker (10)
- jar (1)
- gson (5)
- ubuntu (3)
- 模式 (1)
- neo4j (2)
- elasticsearch (1)
- OmniGranffle (1)
- ASCII (1)
- jdbc (3)
- kafka (1)
- MQ (1)
- chrome (3)
- 华为 (1)
- 路由器 (1)
- api (2)
- 架构 (1)
- 设计模式 (1)
- pip (4)
- springboot (48)
- 数据库 (4)
- thread (1)
- java.thread (1)
- sqlite (1)
- postman (1)
- springboot-actuator (2)
- jwt (1)
- token (1)
- brew (9)
- vim (1)
- virtualbox (1)
- Swagger (1)
- spring-retry (3)
- 调度 (1)
- item2 (5)
- graph (12)
- jgrapht (12)
- tuple (1)
- hadoop (5)
- curl (1)
- 算法 (3)
- Jekyll (1)
- github (1)
- ssh-keygen (1)
- zip (2)
- http (2)
- RestTemplate (8)
- 文件处理 (2)
- XStream (1)
- XML (3)
- JAXB (1)
- 笛卡尔积 (2)
- hive (1)
- 搜狗输入法 (1)
- 常用java类 (2)
- nginx (1)
- log4j2 (1)
- drawio (2)
- 安卓 (1)
- 小米 (1)
- okhttp (1)
- requests (1)
- 格式化 (2)
- MySQL Workbench (1)
- 分布式 (1)
- zip4j (1)
- hbase (5)
- hikari (1)
- javers (1)
- pydatetime (4)
- pyassert (1)
- pylog (2)
- tree (2)
- download (1)
- zeppelin (1)
- utils (2)
- wget (1)
- 鼠标 (1)
- 位运算 (2)
- open api (1)
- 域名 (1)
最新评论
-
youngcoder:
haohaohao~
Spring cache 注解功能不起作用的解决方案 -
kanpiaoxue:
lixz 写道有具体实例demo吗好多年前写的了。你还是去官网 ...
spring batch(一):基础部分 -
lixz:
有具体实例demo吗
spring batch(一):基础部分 -
BuDongOrz:
...
Spring MVC controller 读取配置文件 -
hvang1988:
理解错了,原来还是计数,不是时间
spring batch(二):核心部分(1):配置Spring batch
Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,但可惜只能用于jdk1.5的环境,无法再jdk1.4环境下使用,而JdbcTemplate则完全适用于jdk1.4下的环境,下面列出使用JdbcTemplate调用Oracle存储过程的一些方法:
一) 无返回值的存储过程调用
存储过程:
CREATE OR REPLACE PROCEDURE TESTPRO(PARAM1 IN VARCHAR2,PARAM2 IN VARCHAR2) AS
BEGIN
INSERT INTO TESTTABLE (ID,NAME) VALUES (PARAM1, PARAM2);
END TESTPRO;
Java代码:
package com.dragon.test;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateTest {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void test(){
this.jdbcTemplate.execute("call testpro('p1','p2')");
}
}
注:存储过程TESTPRO中用到了表TESTTABLE(ID, NAME),需事先建好.
二)有返回值的存储过程(非结果集)
存储过程:
CREATE OR REPLACE PROCEDURE TESTPRO(PARAM1 IN VARCHAR2,PARAM2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARAM2 FROM TESTTABLE WHERE ID= PARAM1;
END TESTPRO;
Java代码:
public void test() {
String param2Value = (String) jdbcTemplate.execute(
new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con) throws SQLException {
String storedProc = "{call testpro(?,?)}";// 调用的sql
CallableStatement cs = con.prepareCall(storedProc);
cs.setString(1, "p1");// 设置输入参数的值
cs.registerOutParameter(2, OracleTypes.VARCHAR);// 注册输出参数的类型
return cs;
}
}, new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
cs.execute();
return cs.getString(2);// 获取输出参数的值
}
});
}
注:cs.getString(2)中的数值2是存储过程中的out列对应的索引值(第一个参数索引为1,如此类推)
三)有返回值的存储过程(结果集)
因oracle存储过程所有返回值都是通过out参数返回的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage,分两部分:
1.建一个程序包,如下:
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE TEST_CURSOR IS REF CURSOR;
END TESTPACKAGE;
2.建立存储过程,如下:
CREATE OR REPLACE PROCEDURE TESTPRO(PARAM1 IN VARCHAR2,test_cursor out TESTPACKAGE.TEST_CURSOR) IS
BEGIN
OPEN test_cursor FOR SELECT * FROM TESTTABLE;
END TESTPRO;
可以看到,列表是通过把游标作为一个out参数来返回的。
Java代码:
public void test() {
List resultList = (List) jdbcTemplate.execute(
new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con) throws SQLException {
String storedProc = "{call testpro(?,?)}";// 调用的sql
CallableStatement cs = con.prepareCall(storedProc);
cs.setString(1, "p1");// 设置输入参数的值
cs.registerOutParameter(2, OracleTypes.CURSOR);// 注册输出参数的类型
return cs;
}
}, new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException,DataAccessException {
List resultsMap = new ArrayList();
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(2);// 获取游标一行的值
while (rs.next()) {// 转换每行的返回值到Map中
Map rowMap = new HashMap();
rowMap.put("id", rs.getString("id"));
rowMap.put("name", rs.getString("name"));
resultsMap.add(rowMap);
}
rs.close();
return resultsMap;
}
});
for (int i = 0; i < resultList.size(); i++) {
Map rowMap = (Map) resultList.get(i);
String id = rowMap.get("id").toString();
String name = rowMap.get("name").toString();
System.out.println("id=" + id + ";name=" + name);
}
}
//----------- 备注:引用自: http://rongjih.blog.163.com/blog/static/335744612010313019317/
-- http://hi.baidu.com/air6355/blog/item/6874fe1c408f886ef624e4ae.html
发表评论
-
swagger生成javaAPI的server&client代码
2021-03-25 11:05 947文章原文: 《Spring Boot: API ... -
springboot 返回JSON日期格式问题
2021-03-24 16:36 1112springboot返回的时间格式,根据版本的不同,可能返回 ... -
在其他项目中如何依赖一个springboot的jar?
2021-03-17 16:08 630资料:How to add a dependency ... -
Can we disable the default web server in the Spring Boot application?
2021-02-22 11:07 278The major strong point in S ... -
springboot的json的时间格式:时间戳
2020-07-07 17:52 1151springboot项目中javabean的字段 ... -
Spring RestTemplate处理请求的泛型的情况:ParameterizedTypeReference
2020-04-26 16:50 2129参考文章: https://stackoverflo ... -
spring-data-hbase的使用
2020-04-17 14:17 705maven的配置 <!-- hbase st ... -
本地搭建hbase的环境
2020-04-14 18:37 419最近要用到hbase,需要开发一个程序。总不能跑到线上环境 ... -
springboot的Hikari的数据源报错Failed to validate connection
2020-01-19 14:30 7733使用springboot的默认数据源 Hikari ... -
spring读取classpath下文件
2020-01-09 20:20 323开发过程中,必不可少的需要读取文件,对于打包方式的不 ... -
springboot的多module打包问题(repackage)
2019-12-25 17:28 1653我有个java的项目是maven管理的。mav ... -
Spring JdbcTemplate Querying Examples
2019-12-06 11:43 315Spring JdbcTemplate Queryin ... -
spring-jdbctemplate-streams
2019-11-06 16:19 0使用spring的jdbctemplate查询数据的时 ... -
springboot RestTemplate整合
2019-10-08 09:52 463import org.slf4j.Logger; ... -
Quartz计算下次运行时间
2019-08-09 10:50 1458处理Quartz自身可以计算下次执行时间,还可以通过s ... -
springboot上传文件报错:The field file exceeds its maximum permitted size
2019-07-30 15:37 908参考地址:https://blog.csdn.net/ ... -
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx.xxx
2019-05-24 14:49 4818使用Spring的RestTemplate访问RES ... -
springboot的logback和spring-data-hbase的log4j冲突解决方法
2019-04-15 19:51 1301springboot默认的日志框架是logback,它的性 ... -
获得spring上下文ApplicationContext
2019-04-12 14:15 1277在项目中实现 ApplicationContextAw ... -
Spring Boot Environment
2019-04-12 12:12 1445如何在springboot里面直接读取配置文件里面的内容呢? ...
相关推荐
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...
这样,整个应用就可以通过Spring的依赖注入机制来获取并使用JdbcTemplate实例。 例如,一个简单的`applicationContext.xml`配置片段可能如下: ```xml <bean id="dataSource" class="org.springframework.jdbc....
总的来说,理解如何在Spring中正确地调用Oracle存储过程并传递数组参数是提高应用程序效率和数据库操作灵活性的重要技能。这涉及到了数据库设计、Java编程、Spring框架的使用以及对Oracle特定特性的掌握。通过上述...
- `call`:用于执行存储过程调用。 通过这些方法,开发者可以轻松地进行数据库操作,无需关注底层的资源管理和异常处理,从而提高了开发效率和代码质量。 总之,Spring-JdbcTemplate通过其简洁的API和强大的功能,...
在Java端,可以利用Spring框架整合jdbcTemplate来调用Oracle存储过程。这里主要涉及以下步骤: 1. **配置数据源**:在Spring的配置文件中定义数据源。 2. **定义DAO层**:在DAO层定义方法,用于调用存储过程。 3. *...
2. 使用Spring的jdbcTemplate调用存储过程,处理输入输出参数。 3. 将存储过程返回的数据在Java后端进行处理,封装成适合前端的数据结构。 4. Flex前端通过HTTP服务或AMF获取数据,展示在DataGrid中,并实现分页导航...
总的来说,这个项目展示了如何使用Spring、Spring MVC和JdbcTemplate搭建一个基于Java的Web应用,同时利用Oracle作为后端数据库和Redis作为缓存系统。通过学习这个示例,开发者可以了解到如何整合这些技术来构建高效...
除此之外,文件可能还会涵盖Oracle的高级特性,如存储过程、触发器、游标、PL/SQL块的使用,以及如何在Spring框架中调用这些特性。 将Spring与Oracle结合使用时,开发者通常会利用Spring的JdbcTemplate或...
本项目“springboot双数据源(oracle,mysql).rar”显然是一个使用SpringBoot实现多数据源的例子,允许应用程序同时连接并操作Oracle和MySQL两个数据库。以下将详细介绍实现这一功能的关键知识点。 1. **SpringBoot...
本篇文章将探讨如何在Spring Boot中利用JPA(Java Persistence API)和JdbcTemplate来实现多数据源的管理,同时使用HikariCP作为高效的数据源连接池。 首先,让我们理解一下关键概念: 1. **Spring Boot**: 它是...
最后,对于复杂的SQL查询,可以使用`@Query`注解配合JPA Repository,或者通过`@Procedure`调用存储过程。 总之,Spring Boot集成Oracle数据库涉及多个步骤,包括引入依赖、配置数据库连接、编写DAO层代码、事务...
`oracle_存储过程实例.doc`和`oracle存储过程学习经典[语法+实例+调用].doc`可能是关于如何在Oracle中创建、修改和执行存储过程的文档,包括定义输入输出参数、使用游标、异常处理等内容。`oracle存储过程超详细使用...
`JdbcTemplate`通过封装常见的JDBC操作,如执行SQL查询、更新、调用存储过程等,避免了手动管理连接、结果集解析等繁琐工作,提高了代码的可读性和可维护性。开发者只需提供SQL语句和参数,`JdbcTemplate`会自动处理...
4. **调用JdbcTemplate方法**:使用`JdbcTemplate`提供的方法执行SQL,例如`query()`执行查询,`update()`执行插入、更新或删除。 5. **处理结果**:对于查询操作,`JdbcTemplate`会返回一个结果集,你可以通过`...
接口定义了业务操作,实现类则通过JdbcTemplate调用对应的方法。例如: ```java public interface UserRepository { User findById(int id); List<User> findAll(); void save(User user); } public class ...
以上就是Idea配置Maven、Spring Boot、MyBatis和Oracle的完整过程。通过这些步骤,你可以构建一个功能完善的Java Web项目,实现对Oracle数据库的操作。在实际开发中,还需要注意异常处理、日志记录、安全性配置等多...