使用 Spring 框架调用 DB2 存储过程

使用 Spring 框架调用 DB2 存储过程

developerWorks
文档选项
<noscript></noscript>
将此页作为电子邮件发送

将此页作为电子邮件发送



级别: 中级

赵 雄伟, 软件工程师, IBM CSDL
郑 溪龙, 软件工程师, IBM CSDL

2006 年 7 月 05 日

Spring 框架已经作为逻辑层被广泛的用于轻量级的J2EE开发中。本文将给出一个使用Spring 框架和Struts来调用存储过程的完整例子,包括如何传入参数,如何获得传出参数,如何获得结果集以及如何获得多个结果集。

Spring 框架已经作为逻辑层被广泛的用于轻量级的J2EE开发中。Spring 框架可以很好的和Struts, WebWork, Hibernate等其他开源项目集成在一起。尤其在重构现有应用的使用,Spring 框架可以提供很多帮助。存储过程可以用来封装业务逻辑,控制用户权限,以及做日常的增删改查(CRUD)。在重构已有系统的时候,一般存储过程中的业务逻辑并不需要改变,只是调用存储过程的方式需要进行调整。Spring 框架提供了完整的存储过程封装,数据源管理的功能,使用Spring 框架,开发人员可以很容易的构建轻量级J2EE应用。本文将给出一个使用Spring 框架和Struts来调用存储过程的完整例子,包括如何传入参数,如何获得传出参数,如何获得结果集以及如何获得多个结果集。

读者定位为具有DB2和Web开发经验的开发和设计人员。

读者可以学习到如何使用Spring框架来调用存储过程,可以通过文中的代码快速构建一个使用Spring框架的Web应用。本文的例子将包括使用Apache Struts进行网页表单的提交和验证,使用Spring框架来调用具有输入输出参数和返回结果集的存储过程,结果集将通过DisplayTag来进行显示。

Spring是一个广泛应用于逻辑层的开源框架,它使构建J2EE应用程序的Java开发人员可以直达实质问题的核心,而不是在提供服务的细节上花费大量时间。您可以通过developerWorks的文章"Spring 系列: Spring 框架简介"来了解Spring框架。Spring框架中一个重要的模块就是Spring DAO,它允许开发者在不同数据访问技术间切换,而且Spring提供了统一的异常处理机制,在切换的同时不用考虑异常处理。

当前很多应用程序使用存储过程来封装业务逻辑,在重构已有应用的时候,只是更改调用存储过程的方式。在调用存储过程方面现在大多直接采用JDBC的操作处理,这种方法需要创建数据库连接、创建statement语句、关闭ResultSet、关闭statement、关闭数据库连接、处理异常等等,一方面这些代码与业务逻辑不相关,另一方面也可能会给应用引入bug。因此很多人更青睐于使用数据持久化框架。在数据持久化框架中Hibernate 倍受人们关注,它主要提供Java对象与关系数据库的映射(O/R Mapping),这样只需关心操作java对象而不必关心底层数据。在Hibernate 3.0中也提供了对存储过程查询的支持,但是要求存储过程必须返回一个结果集,并且关键的是应用要遵循O/R Mapping的设计要求来架构应用系统。Spring DAO为JDBC提供了抽象层,使得开发者更高效的使用JDBC,它提供了对存储过程的支持,通过抽象类org.springframework.jdbc.object.StoredProcedure我们可以方便的调用存储过程,支持输入参数、输出参数和多个结果集。下面将通过一个实例详细的介绍使用Spring框架来调用存储过程的方法。

实例将实现在页面表单输入客户代码custNum,然后通过存储过程查询数据库中客户信息,得到所有客户信息和所查客户信息,并将其返回结果在页面上显示。您可以下载实例代码,代码可以在Eclipse环境中运行,对照代码看这篇文章更直观。

1. 编写DB2存储过程

我们首先来看DB2的存储过程。存储过程一般被用来返回数据库中表的数据或者对表的数据进行更改。在这里我们使用存储过程从表中获得结果集。

首先我们需要建立DB2环境:

1) 把远程DB2服务器编制到本地。在这里我们远程的DB2主机地址是zxl01.cn.ibm.com,端口是50001


清单1
db2 CATALOG TCPIP NODE node01 REMOTE zxl01.cn.ibm.com SERVER 50001

2) 在本地建立远程DB2的别名。在这里我们使用testDB作为别名。


清单2
db2 CATALOG DB testDB AT NODE node01

3) 创建customer数据表


清单3
DROP TABLE DSW.CUSTOMER
@
CREATE TABLE DSW.CUSTOMER 
(
    CUST_NUM                 VARCHAR(10) NOT NULL,
    CUST_NAME                VARCHAR(35) NOT NULL,
    ADDRESS                  VARCHAR(35) NOT NULL,
    CITY                     VARCHAR(35) NOT NULL,
    COUNTRY                  VARCHAR(3)  NOT NULL,
    ADD_DATE                 TIMESTAMP     NOT NULL
)
@
ALTER TABLE DSW.CUSTOMER 
    ADD CONSTRAINT CUSTOMER_PK
PRIMARY KEY (CUST_NUM)
@

4) 创建存储过程


清单4
DROP PROCEDURE DSW.S_CUSTOMER
@
CREATE PROCEDURE DSW.S_CUSTOMER (
  OUT poStatus     INTEGER,
  IN  piCust_num      VARCHAR(10)
)
LANGUAGE SQL
SPECIFIC DSW.S_CUSTOMER
RESULT SETS 2

P1: BEGIN NOT ATOMIC
   -------------------------------------------------------------
   -- CONDITION declaration
   -------------------------------------------------------------
   DECLARE sqlReset    CONDITION for sqlstate '80100';

   -- Generic Variables
   DECLARE SQLCODE      INTEGER       DEFAULT 0;
   DECLARE SQLSTATE     CHAR(5)       DEFAULT '00000';
  
   -- Generic handler variables
   DECLARE hSqlcode     INTEGER       DEFAULT 0;
   DECLARE hSqlstate    CHAR(5)       DEFAULT '00000';

   DECLARE v_Cnt INT;

   -- Cursor for returning RS to the client
   DECLARE cursor1 CURSOR WITH RETURN TO CLIENT FOR (
	   SELECT CUST_NUM, CUST_NAME FROM DSW.CUSTOMER
   );

   DECLARE cursor2 CURSOR WITH RETURN TO CLIENT FOR (
	   SELECT * FROM DSW.CUSTOMER
	   WHERE CUST_NUM = piCust_num
   );
   
   OPEN cursor1;
   
   OPEN cursor2;

   SET poStatus = 2;
   RETURN poStatus;

END P1
@

5) 插入测试数据


清单5
INSERT INTO DSW.CUSTOMER (CUST_NUM,CUST_NAME,ADDRESS,CITY,COUNTRY)
VALUES('1','Steven','shang di','BeiJing','CHN')
@
INSERT INTO DSW.CUSTOMER (CUST_NUM,CUST_NAME,ADDRESS,CITY,COUNTRY)
VALUES('2','David','shang di','BeiJing','CHN')
@
INSERT INTO DSW.CUSTOMER (CUST_NUM,CUST_NAME,ADDRESS,CITY,COUNTRY)
VALUES('3','Tony','shang di','BeiJing','CHN')
@
INSERT INTO DSW.CUSTOMER (CUST_NUM,CUST_NAME,ADDRESS,CITY,COUNTRY)
VALUES('4','Maggie','shang di','BeiJing','CHN')
@





回页首


2. 创建基于Spring+Struts框架的web应用

将Spring框架集成到现有的Web应用中十分容易,在web.xml中的Listener部分增加一个Spring的ContextLoaderListener同时设置contextConfigLocation参数,指向Spring的配置文件位置。如清单6所示。在web.xml中还有对于Struts的支持,读者可以参考developerworks上的Struts专题来了解如何使用Struts。


清单 6. web.xml.
	


将Spring和Struts进行整合的方法有很多,developerworks上的文章"使用 Spring 更好地处理 Struts 动作"中介绍了几种方法,可以参照。





回页首


3. 使用Spring framework建立数据源

在Spring的配置文件applicationContext-service.xml中我们对使用到的Java类和数据源进行了配置。通过指定driverClassName、url、username、password等属性就可以创建数据源。在清单7中我们使用直接连接数据库的方式,我们也可以使用在应用服务器中配置的DataSource来连接数据库,只需要更改为不同的Reference就可以改变对数据库的连接方式。在这方面,Spring框架显示出了很强的灵活性。


清单7. applicationContext-service.xml.

"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp"></web-app>
<display-name></display-name>SpringSproc

<context-param></context-param>
<param-name></param-name>contextConfigLocation
<param-value></param-value>
/WEB-INF/applicationContext-service.xml


<listener></listener>
<listener-class></listener-class>
org.springframework.web.context.ContextLoaderListener


<servlet></servlet>
<servlet-name></servlet-name>action
<servlet-class></servlet-class>
org.apache.struts.action.ActionServlet

<load-on-startup></load-on-startup>1

<servlet-mapping></servlet-mapping>
<servlet-name></servlet-name>action
<url-pattern></url-pattern>*.do

<welcome-file-list></welcome-file-list>
<welcome-file></welcome-file>index.html



在Java代码SearchAction.java中将连接实例化。这也是Spring中的核心思想之一:控制反转(Inversion of Control)。清单8中(1)是把一个在applicationContext-service.xml中配置的bean实例化成对象,(2)调用getBean方法得到基于接口SearchDAO(具体见清单9) 的实例SearchImpl bean,然后再通过(3)调用具体的方法去执行存储过程。


清单8. Code in Struts SearchAction.java.
private static ApplicationContext ctx = null;
public Object getBean(String name) {                  |(1)
		if (ctx == null) {
			ctx = WebApplicationContextUtils
					.getRequiredWebApplicationContext
					(servlet.getServletContext());
		}
		return ctx.getBean(name);
	}
SearchDAO mgr = (SearchDAO) getBean("SearchImpl"); |(2)
Map map = mgr.execute(custNum);                        |(3)


清单9. Code in SearchDAO.java.
package com.springsproc.dao;

import java.util.List;

public interface SearchDAO {
	public Map execute(String custNum);
}





回页首


4. 使用Spring framework为存储过程传入参数

用户在web页面上填入custNum,提交后经Struts的validation验证传入action的FormBean中,然后再从FormBean中得到custNum,并由清单8中(3)传入Spring framework。





回页首


5. 使用Spring framework获得存储过程的传出参数和结果集

Spring framework提供了调用存储过程的方法,下面对几个相关的类和接口做简单介绍,你也可以通过Spring API获得更多详细信息。

  • org.springframework.jdbc.object.StoredProcedure 这是一个抽象类,通过declareParameter方法来声明存储过程的输入输出参数,再由execute方法来调用存储过程。
  • org.springframework.jdbc.core.SqlParameter 用来代表存储过程的参数。
  • org.springframework.jdbc.core.ResultSetSupportingSqlParameter SqlParameter的子类,是SqlOutParameter、SqlReturnResultSet这些支持结果集参数类的公共基类。
  • org.springframework.jdbc.core.SqlOutParameter ResultSetSupportingSqlParameter的子类,用来代表存储过程的输出参数。
  • org.springframework.jdbc.core.SqlReturnResultSet ResultSetSupportingSqlParameter的子类,用来代表调用存储过程的输出结果集。
  • org.springframework.jdbc.core.RowMapper 这是一个接口,通常为JdbcTemplate的查询方法或者存储过程返回结果集使用。

了解了Spring为我们提供的这些关于存储过程的方法和接口后,来看看具体的实现方法。如清单10所示。SearchDAOImpl.java中有三个内部类,其中SearchCustomersProcedure来负责声明数据库连接和存储过程名(2)、输入参数(6)、输出参数(5)以及输出结果集(3)(4),DemoRowMapper和DemoRowMapper2来负责取得结果集中的数据。其中(3)创建一个名为"resultSet"的结果集,通过DemoRowMapper(7)来取得结果集中的数据,当有多个结果集的时候需要重复这个过程,如(6)(8)。最后由execute方法(1)填入输入参数并执行存储过程调用。


清单10. Code in SearchDAOImpl.java.
public Map execute(String custNum) {
		SearchCustomersProcedure sp = new SearchCustomersProcedure(dataSource);
		Map map = new HashMap(1);
		map.put("piCust_num", custNum);
		Map results = sp.execute(map);              |(1)
		return results;
}

private class SearchCustomersProcedure extends StoredProcedure {
	SearchCustomersProcedure(DataSource dataSource) {
		super(dataSource, sprocName);                |(2)   
		declareParameter(new SqlReturnResultSet("resultSet",
				new DemoRowMapper()));      |(3)
		declareParameter(new SqlReturnResultSet("resultSet2",
				new DemoRowMapper2()));     |(4)

		declareParameter(new SqlOutParameter("poGenStatus", Types.INTEGER));  
		|(5)
		declareParameter(new SqlParameter("piCust_num", Types.VARCHAR));  
		|(6)	}
}

private class DemoRowMapper implements RowMapper {          |(7)
	public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
		Customer customer = new Customer();
		customer.setCustNum(rs.getString(1));
		customer.setCustName(rs.getString(2));
		return customer;
	}
}

private class DemoRowMapper2 implements RowMapper {         |(8)
	public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
		Customer customer = new Customer();
		customer.setCustName(rs.getString(1));
		customer.setCustNum(rs.getString(2));
customer.setCustAddress(rs.getString(3));
		customer.setCustCity(rs.getString(4));
		customer.setCustCountry(rs.getString(5));
		return customer;
	}
}





回页首


6. 在Web页面上显示结果集 (使用DisplayTag)

在SearchAction从SearchDAOImpl取得数据以后,将数据以attribute方式存入request中,如清单11中(1)(2)所示。在页面中使用DisplayTag将request中的数据以表格形式显示出来。可以指定列名或者按某些列排序,如清单12中(1);也可以不做任何处理,只是将数据显示出来,如清单12中(2)。可以在DisplayTag Homepage得到更多关于DisplayTag的详细信息。


清单11. Code in Struts SearchAction.java.
List list = (List)map.get("resultSet");
List list2 = (List)map.get("resultSet2");
String poGenStatus = map.get("poGenStatus").toString();
log.info("poGenStatus is:" + poGenStatus);
                                   
request.setAttribute("customerList",list);  |(1)
request.setAttribute("MyCustomers",list2);  |(2)
                                   
return mapping.findForward("list");


清单12. Code in Struts SearchByCustNumber.jsp
|(1)
<display:table id="customers" requesturi="" cellspacing="2" cellpadding="2" defaultsort="1" name="customerList">
    
    <display:column title="Customer number" headerclass="sortable" headerstyleclass="header" property="custNum" sort="true"></display:column>
    <display:column title="Customer name" headerclass="sortable" headerstyleclass="header" property="custName" sort="true"></display:column>
</display:table>

|(2)
<display:table id="myCustomer" requesturi="" cellspacing="2" cellpadding="2" defaultsort="1" name="myCustomer">
</display:table>

这样使用Spring framework调用存储过程的实例就完成了,运行该实例,如下图所示:







回页首


使用Spring framework的优点

Spring框架提供了一些接口和类,封装了对数据库的处理,极大地简化了对数据库的操作。开发人员可以把更多的精力放在业务逻辑上。数据库连接等信息写在配置文件中,在运行期装入bean中进行连接操作实例化的方法使系统更加灵活,可以在部署应用的时候很方便的更改,不仅提高了团队开发的效率,也提高了系统的可维护性。





回页首


总结

本文以一个实例介绍了使用Spring框架调用存储过程的方法,通过本文您已经可以使用Spring框架结合不同类型的存储过程来对DB2中的数据进行操作。并且参照这个实例您可以创建基于Struts + Spring框架的web应用系统。

使用Docker启动DB2并在Spring Boot中集成DB2 Java 通过上述步骤,您已成功使用Docker启动了DB2数据库,并在Spring Boot应用程序中集成了DB2 Java驱动程序。您可以根据自己的需求扩展和修改这些示例代码,以适应实际项目的要求。在本文中,我们将探讨如何使用Docker启动IBM DB2数据库,并在Spring Boot应用程序中集成DB2 Java驱动程序。在上面的代码中,我们使用DB2 Java驱动程序注册驱动程序并创建数据库连接。镜像,并将数据库的端口映射到主机的50000端口。在上面的配置中,我们使用了IBM提供的。 阅读详情

相关推荐

mybatis,spring,db2 整合工程

这是使用 idea 工具整合 spring + mybatis +db2 的工程文件源码。打开 jdbc.properties 文件。。写入对应的 url,password,user 即可。。其他地方一做出配置。。具体细节 请参考 我的原创blog :http://blog.youkuaiyun.com/qq_18730505/article/details/78851593

sqlite导出数据 导入 mysql/PbootCMS mysql/mysql 8.0

环境 1.Server version: 8.0.21 MySQL Community Server - GPL 2.PBooyCMS 3 3.sqlite数据转移到mysql 问题描述 由于mysql升级到8.0版本;字符集设置,以及数据库的连接认证都会与之前版本不一致,造成诸多报错。所做的工作,便是将多项设置,人为的改回与先前版本兼容的设置内容。 报错 1.Server sent charset unknown to the client 1.The server requested authentic

Soonjn的博客 1777

MS2107 CVBS转USB2.0 音视频采集芯片,支持1080P@30HZ输出

MS2107 是一款视频和音频采集芯片,支持CVBS转USB2.0 ;可以将 CVBS、S-Video 和音频信号通过 USB接口传送到 PC、智能手机和平板电脑上预览或采集。

TEL18967112838的博客 2075

spring集成db2

1.先用工具连接db2 工具下载连接,免安装 https://download.youkuaiyun.com/download/qq_35653822/12707977 连接方式选择url方式 2.确认ip端口号以及用户名密码没有错误之后,再用spring继承 2.1jar包导入 jar包下载地址 https://download.youkuaiyun.com/download/qq_35653822/12707998 粘贴到lib下,如果开始没出现能展开得那个三角号,你不要慌,等你配置完pom或者启动起来就有

qq_35653822的博客 1159

UVM环境复位--stop_sequences()

在UVM验证环境中, stop_sequences是一个用于强制终止所有正在运行的 Sequence 的方法,通常用于动态控制激励生成流程。1.通过uvm_config_db传递事件和严格的同步机制,此方案符适用于复杂复位场景和动态测试控制。组件耦合:Driver 和 Sequence 不再直接依赖env,通过标准接口通信。竞争条件:确保 Driver 完成清理后再终止 Sequence。代码健壮性:使用非阻塞操作和事件监听,避免死锁。

qq_42779035的博客 3014

从零到一:KUKA机械臂与ROS的工业级通讯协议深度解析

本文深度解析KUKA机械臂与ROS的工业级通讯协议,重点对比EKI与RSI两种核心接口的技术特点与应用场景。详细介绍了网络架构设计、数据包解析机制及ROS-I集成方法,并提供实时性能优化与故障排除策略,为工程师实现高可靠性工业自动化集成提供完整解决方案。

2a4s6d8f0g的博客 296

DB2数据库的安装与Spring Boot配置

DB2数据库的安装与Spring Boot配置

qq_41230572的博客 2793

【中文OCR】中文字符图片的分割方法

最近想做一个关于中文OCR的小系列,也是对之前做的东西的一个总结。作为这个系列的第一篇,我觉得还是有必要说一下关于中文字符图片分割的问题。因为现在开源的OCR代码比较多,相对而言对字符图片的分割的方法提的比较少,尤其是中文字符图片的分割还是有一定困难在里面的。 一、普遍使用的切割方法 现在大部分开源项目上用切割方法还是基于水平、垂直投影字符切割方法。 原理比较简单容易理解,也比较容易实现。先...

zhangzm0128 1万+

db2数据库jdbc驱动,springboot配置连接db2

db2

weixin_45810161的博客 3035

Windows下CMake编译VTK

选择项目INSTALL,生成该项目,得到vtk在Debug模式下的lib和dll文件,在文件夹中可看见,已得到debug模式下lib库与dll库。,把Value值设置为最后在vtk_sln中生成include、dll、lib的位置。在上面点击Configure后,红色区域没有了。选择自己vs编译平台的版本信息,我这边已经设置好了没有这个设置了,借用参考博客的图片。设置完后,点击左下角"Configure",然后等待Configure。,把搜索结果的Value勾选上。在search中搜索。

weixin_74239923的博客 841

STM32CubeIDE串口打印浮点数踩坑实录:5分钟搞定printf输出小数(附完整配置截图)

本文针对STM32CubeIDE中串口无法打印浮点数的常见问题,提供了详细的解决方案。核心在于通过添加“-u _printf_float”链接器参数,启用标准库的浮点数格式化支持。文章附有完整的配置截图和步骤,并提供了系统性的排查清单,帮助开发者快速解决printf输出小数的问题。

weixin_29163797的博客 343

DAO调用存储过程问题

相关文章:1、使用 Spring 框架调用 DB2 存储过程      2、Spring如何使用JdbcTemplate调用存储过程的三种情况      3、spring中调用存储过程,函数 转载于:https://www.cnblogs.com/douglas0126x/p/5010262.html...

weixin_34357267的博客 166

告别屏幕适配焦虑:用AndroidAutoSize 1.2.1搞定多尺寸设备(附AndroidX兼容方案)

本文详细介绍了AndroidAutoSize 1.2.1在屏幕适配中的应用,帮助开发者高效解决多尺寸设备适配问题。通过动态计算机制,AutoSize显著提升了UI一致性和开发效率,特别适合处理横竖屏切换、折叠屏等复杂场景。文章还提供了AndroidX兼容方案和性能优化建议,是Android开发者的实用指南。

weixin_42535461的博客 189

Spring JDBC调用存储过程

以下示例将演示spring jdbc如何调用存储过程。将通过调用存储过程来读取Student表中的一个可用记录。将传递一个学生ID并获取学生记录信息。 语法: SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName("getRecord"); SqlParameterSource in =...

dengjuanshou7445的博客 310

TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN)

CAN驱动程序负责提供AUTOSAR指定的标准CAN通信服务。M_CAN单元是底层的CAN硬件单元,它由共享消息RAM(在AUTOSAR中称为硬件对象)的节点(在AUTOSAR中称为控制器)组成。CAN驱动提供以下服务:·初始化CAN控制器以控制CAN控制器的行为和状态·设置和修改CAN控制器的波特率配置·支持CAN和CAN FD帧的收发·在轮询和中断模式下,成功的帧传输通知,专用和FIFO消息的接收和总线事件通知·数据接收使用接收FIFO功能·假装网络模式处理·支持多读/写周期功能。

梦想技术家 3939

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring 调用存储过程返回结果集

Spring 的JdbcTemplate 提够了对存储过程调用的支持 但是直接体构一种常用的返回结果集,sqlServer(ResultSet),Oracle(游标)的方式 很多情况下我们需要把这些信息封装成List,或者List的形式返回给应用层。 实现方式: [code="Dao"] @Override public List callProcedure(String spNa...

aguu125的博客 655

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java spring 调用mysql存储过程_Spring JDBC调用存储过程

以下示例将演示spring jdbc如何调用存储过程。将通过调用存储过程来读取Student表中的一个可用记录。将传递一个学生ID并获取学生记录信息。语法:SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName("getRecord");SqlParameterSource in = new MapSql...

weixin_34791683的博客 436

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JdbcTemplate – 调用存储过程

则会自动为德比,MySQL,微软SQL服务器,甲骨文,DB2,系统库和后greSQL数据库检测“IN”和“OUT”参数。下面是在参数和搜索结果中获取搜索计数的简单存储过程。3.2. 一个春季SimplJdbc调用示例,用于在存储过程调用中获取多个结果集。3.1. 一个包含多个结果的简单存储过程,演示如何获取最近更新的语句的行计数。参数,并提供更清晰的方法来注册过程/函数/架构/目录名称和参数绑定。1.1. 简单的Mysql存储过程,用于按名称获取用户的搜索结果。若要调用存储的函数,请使用。

allway2的博客 4275

Spring中使用存储过程

以下内容引用自http://wiki.jikexueyuan.com/project/spring/jdbc-framework-overview/sql-stored-procedure-in-spring.html: SimpleJdbcCall类可以被用于调用一个包含IN和OUT参数的存储过程。你可以在处理任何一个RDBMS时使用这个方法,支持数据库有Apache Derby,D...

angou6476的博客 261

spring+mybatis 中使用Spring的JdbcTemplate调用Oracle的存储过程

最近公司项目需要在同步实时数据时(逻辑客户数据-中间库-系统的数据库),先把客户的数据同步到中间数据库中,因此使用了存储过程来实现这一需求:无返回参数的存储过程定义和调用:oracle中定义create or replace procedure sd_middata_kc isbegin update TSTKLSKC set comflag=0 where comflag=1 and orgco...

zlb_lover的博客 1820

spring 数据库 链接db2_实例讲解使用Spring通过JPA连接到Db2

前提条件Maven一个拥有访问凭证的 Db2 实例:IBM Cloud本地Java JDKIBM Cloud 开发者工具(可选)创建项目首先,确定您计划使用 IBM Cloud 开发者工具还是 Spring Initializr 创建项目,然后按照各自的说明进行操作。IBM Cloud 开发者工具如果您使用 IBM Cloud 开发者工具创建项目,那么使用 dev 插件创建新的 Spring 微服...

weixin_35698738的博客 890

spring 数据库 链接db2_使用Spring通过JPA连接到Db2示例代码

实例讲解使用Spring通过JPA连接到Db2前提条件Maven一个拥有访问凭证的 Db2 实例:IBM Cloud本地Java JDKIBM Cloud 开发者工具(可选)创建项目首先,确定您计划使用 IBM Cloud 开发者工具还是 Spring Initializr 创建项目,然后按照各自的说明进行操作。IBM Cloud 开发者工具如果您使用 IBM Cloud 开发者工具创建项目,那么...

weixin_36173545的博客 417

spring boot配置JDBC数据源连接DB2数据库

1.POM文件中添加JDBC依赖和DB2驱动依赖 <!--引入JDBC依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </...

wangxinzhen的专栏 8589

Spring Boot添加DB2驱动

其实就是maven添加DB2驱动。只是要求db2jcc4。 db2jcc4 mvn install:install-file "-DgroupId=com.ibm.db2" "-DartifactId=db2jcc4" "-Dversion=11.1" "-Dpackaging=jar" "-Dfile=D:\db2jcc4.jar" db2jcc_license_cu mvn ins...

qq_18357961的博客 9244
上一篇: Hibernate3.x调用存储过程大揭密
下一篇: Java 调用存储过程
mlxia
博客等级 码龄26年 28粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值