- 浏览: 1523899 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
使用 Spring 框架调用 DB2 存储过程 |
级别: 中级 赵 雄伟, 软件工程师, 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环境中运行,对照代码看这篇文章更直观。 我们首先来看DB2的存储过程。存储过程一般被用来返回数据库中表的数据或者对表的数据进行更改。在这里我们使用存储过程从表中获得结果集。 首先我们需要建立DB2环境: 1) 把远程DB2服务器编制到本地。在这里我们远程的DB2主机地址是zxl01.cn.ibm.com,端口是50001 清单1
2) 在本地建立远程DB2的别名。在这里我们使用testDB作为别名。 清单2
3) 创建customer数据表 清单3
4) 创建存储过程 清单4
5) 插入测试数据 清单5
将Spring框架集成到现有的Web应用中十分容易,在web.xml中的Listener部分增加一个Spring的ContextLoaderListener同时设置contextConfigLocation参数,指向Spring的配置文件位置。如清单6所示。在web.xml中还有对于Struts的支持,读者可以参考developerworks上的Struts专题来了解如何使用Struts。 清单 6. web.xml.
将Spring和Struts进行整合的方法有很多,developerworks上的文章"使用 Spring 更好地处理 Struts 动作"中介绍了几种方法,可以参照。
在Spring的配置文件applicationContext-service.xml中我们对使用到的Java类和数据源进行了配置。通过指定driverClassName、url、username、password等属性就可以创建数据源。在清单7中我们使用直接连接数据库的方式,我们也可以使用在应用服务器中配置的DataSource来连接数据库,只需要更改为不同的Reference就可以改变对数据库的连接方式。在这方面,Spring框架显示出了很强的灵活性。 清单7. applicationContext-service.xml.
在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.
清单9. Code in SearchDAO.java.
4. 使用Spring framework为存储过程传入参数 用户在web页面上填入custNum,提交后经Struts的validation验证传入action的FormBean中,然后再从FormBean中得到custNum,并由清单8中(3)传入Spring framework。
5. 使用Spring framework获得存储过程的传出参数和结果集 Spring framework提供了调用存储过程的方法,下面对几个相关的类和接口做简单介绍,你也可以通过Spring API获得更多详细信息。
了解了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.
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.
清单12. Code in Struts SearchByCustNumber.jsp
这样使用Spring framework调用存储过程的实例就完成了,运行该实例,如下图所示:
Spring框架提供了一些接口和类,封装了对数据库的处理,极大地简化了对数据库的操作。开发人员可以把更多的精力放在业务逻辑上。数据库连接等信息写在配置文件中,在运行期装入bean中进行连接操作实例化的方法使系统更加灵活,可以在部署应用的时候很方便的更改,不仅提高了团队开发的效率,也提高了系统的可维护性。
本文以一个实例介绍了使用Spring框架调用存储过程的方法,通过本文您已经可以使用Spring框架结合不同类型的存储过程来对DB2中的数据进行操作。并且参照这个实例您可以创建基于Struts + Spring框架的web应用系统。 |
发表评论
-
(转)SQLデータ型
2011-08-24 18:09 2111https://www.microfocus. ... -
(转)Determining equivalent SQL and COBOL data types
2011-08-24 18:01 1450http://publib.boulder.ibm ... -
(转)grep Programs and Regular expressions
2011-08-10 13:10 1180http://ss64.com/bash/grep-r ... -
(转)find:根据指定条件查找文件
2011-08-10 11:34 1005http://man.ddvip.com/ ... -
(转)[红旗] 手动可以执行,加入crontab 就不行了
2011-07-05 13:07 1770http://bbs.chinaunix.net ... -
(转)Linux——计划任务管理
2011-07-04 15:02 1534http://hi.baidu.com/%BA%CE%B4 ... -
(转)CentOS的计划任务,Crontab安装及使用方法
2011-07-04 15:01 3077http://www.hitsword.org/re ... -
(转)Windows如何压缩tar.gz格式
2011-05-11 10:34 1245http://www.viosem.com/2008/ ... -
(转)日语的文字编码
2011-03-02 10:23 1618http://blog.csdn.net/jackyren ... -
(转)《软件工程的事实与谬论》
2010-11-04 09:57 1645http://book.group.iteye.com ... -
(转)VB6迁移到VB.NET的一些问题汇总
2010-11-03 15:02 1765http://www.cnblogs.com/ols/ar ... -
(转)《张冰Java视频教程》(struts Hibernate spring jsp J2SE)长期更新
2010-07-14 20:51 0http://www.verycd.com/topics/ ... -
(转)使用httpclient4登录百度
2010-02-26 14:45 0http://legend30g-4/article/h ... -
(转)如何一次性从Outlook Express中导出邮件
2010-01-06 13:23 5625http://hi.baidu.com/grape17/b ... -
Top Ten TPC-E by Performance
2009-10-21 14:50 1016http://www.tpc.org/tpc ... -
IBM DB2 UDB 和 SQL Server 2000
2009-10-21 14:49 1329http://www.microsoft.com/chin ... -
TCP/IP環境のPCからメインフレームを使用する
2009-10-16 11:51 0http://cap-l.sakushin-u.ac.jp:8 ... -
JP1名词解释
2009-10-10 15:17 3252http://soft.yesky.com/0/30685 ... -
Java 内存溢出的可能性汇总
2009-02-18 13:42 15411 分配的内存太小, 请使用 JVM 参数设置更大的可用内存 ... -
Java web应用内存溢出 [已结帖,结帖人:pengble]
2009-02-18 13:40 2254加为好友发送私信在线聊天
相关推荐
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
使用Spring的JdbcTemplate调用Oracle的存储过程
spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助
Spring jdbcTemplate调用Oracle存储过程返回List集合
spring mvc + mybatis 调用mysql 存储过程
SSH项目改为Spingboot项目,将项目中部分需要调用存储过程的部分用entityManagerFactory.unwrap(SessionFactory.class).openSession()来获取Session实现后发现项目访问数据库超过十次就会挂掉,原因是Springboot...
适合有spring框架的javaEE平台,出自spring的HttpInvokerServiceExporter导出器,依赖Spring.jar
提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。 Spring 上下文。向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理...
我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring框架——从一个...
主要给大家介绍了关于Spring boot调用Oracle存储过程的两种方式及完整代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
即Spring框架的概述 1。 介绍Spring框架 1.1。 依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名...
spring框架,技术详解及使用指导spring框架,技术详解及使用指导spring框架,技术详解及使用指导
Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的...如果需要使用调用框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。
Spring远程调用使用http方式,将server和client直接部署后,进入http://localhost/HttpClientSpringRMIClient/即可
一本很好的快速学习Spring框架开发的指导手册,中文、PDF排版格式。
使用Java struts+spring_ibaits+调用Mysql存储过程 实现增删改查
本篇文章主要介绍了Spring Data JPA调用存储过程实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
Spring Boot框架通过自动配置和一系列预定义的特性,显著简化了Spring应用程序的开发过程。Spring Boot框架是一个用于构建任何类型应用程序的修改版Spring框架,它基于Java并提供了快速构建和启动应用程序的能力。...