`

Spring-JdbcTemplete调用Mysql存储过程

阅读更多
Spring-JdbcTemplete调用Mysql存储过程
2007-09-19 10:42 A.M.
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为我们提供的这些关于存储过程的方法和接口后,来看看具体的实现方法。如清单所示。


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

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

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;
 }
}

   
--直接调用带参数的存储过程

DataProcessDAO.java


public class DataProcessDAO {

public DataProcessDAO() {}

/**
* Dataprocess       此方法将调用Mysql存储过程 "OYP_TO_NEWYP(IN PROVINCE varchar(10) ,IN VERNIER BIGINT)" 以处理数据库表.
* @param proviceCode
* @param startVernier
* @return
*/
public Object oYPToNewYP(String proviceCode, Long startVernier) {
         final String psql = "{call OYP_TO_NEWYP(?,?)}"; 
         Object[] params = new Object[] { proviceCode, startVernier };
         return jdbcTemplate.update(psql,params);
}

private JdbcTemplate jdbcTemplate;
public void setJdbcTemplete(JdbcTemplate jdbcTemplete) {
       this.jdbcTemplate = jdbcTemplete;
}

}
        

分享到:
评论

相关推荐

    spring-batch同步数据库mysql源码

    《Spring-Batch同步数据库MySQL源码解析》 在IT领域,数据同步是一项至关重要的任务,尤其是在分布式系统中,保持数据库的一致性是确保系统稳定运行的关键。Spring-Batch作为Spring框架的一部分,为批量处理和数据...

    spring-cloud模块spring-boot微服务 mysql数据同步到elasticsearch 实时同步

    而Spring Boot则简化了创建独立、生产级的基于Spring的应用程序的过程,它集成了大量的常用库,使得开发者可以快速地进行开发。 在上述标题中提到的“spring-cloud模块spring-boot微服务”,这意味着我们将探讨如何...

    spring mvc + mybatis 调用mysql 存储过程

    本文将详细讲解如何在Spring MVC和MyBatis集成的项目中调用MySQL存储过程。 首先,让我们理解存储过程的概念。存储过程是在数据库中预编译的一组SQL语句,可以包含输入、输出和内部参数,能够执行复杂的业务逻辑。...

    spring-mybatis-mysql-json

    综上所述,"spring-mybatis-mysql-json"项目是一个综合性的示例,展示了如何在Java Web开发中利用MySQL的JSON列存储复杂数据,通过MyBatis进行数据操作,并使用SSH框架构建应用程序。这个项目对于学习和理解这些技术...

    spring-redis-mysql整合

    4. **Spring整合Mybatis**:Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Spring与Mybatis结合,可以通过Spring的IoC容器管理Mybatis的SqlSessionFactory和Mapper接口,简化数据库操作。...

    Maven-Spring-Spring-MVC-MyBatis-MySQL

    SSM整合是Java Web开发中常见的一种框架集成方式,它结合了Maven、Spring、Spring MVC和MyBatis四个核心组件,以及MySQL作为后端数据库。这个项目名为"Maven-Spring-Spring-MVC-MyBatis-MySQL",旨在演示如何在实际...

    spring-aop-jar

    - 连接点(Join Point):连接点是程序执行过程中的一个特定点,例如方法的调用或字段的访问。 - 切入点(Pointcut):切入点是连接点的集合,定义了切面将在哪些连接点上应用。 - 通知(Advice):通知是在特定连接...

    spring-framework-4.1.6.RELEASE.rar

    此压缩文件中包含spring的如下组件的doc,source,jar: spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-...

    spring-beans-3.0.xsd

    《Spring框架中的beans配置文件详解——以spring-beans-3.0.xsd和3.1.xsd为例》 在Spring框架中,`spring-beans`是核心组件之一,它负责管理对象的生命周期和依赖关系。`spring-beans`的配置文件通常以`.xsd`为后缀...

    spring-boot_mysql_mybatis_druid

    在Spring Boot项目中,MySQL常被用来存储和管理应用程序的数据。 **MyBatis** 是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它...

    spring-boot-mybatis-mysql-demo

    【标题】"spring-boot-mybatis-mysql-demo" 是一个基于Spring Boot、MyBatis和MySQL数据库的示例项目,旨在展示如何在实际开发中整合这三个技术进行数据操作。这个项目提供了一个快速入门的模板,帮助开发者理解它们...

    spring-boot+mysql的演示zip代码

    【标题】"spring-boot+mysql的演示zip代码"揭示了一个基于Spring Boot框架与MySQL数据库集成的应用实例。在本文中,我们将深入探讨如何利用Spring Boot的便捷特性与MyBatis持久层框架来构建一个完整的Web应用。 ...

    spring 3.2.4.RELEASE jar包

    spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...

    spring-jdbc jar包.rar

    1. **JdbcTemplate**:这是Spring JDBC的核心类,它通过模板方法模式将常见的JDBC操作进行了封装,如执行SQL查询、更新、调用存储过程等。开发者只需要关注SQL语句和参数,而无需处理连接创建、关闭、异常处理等繁琐...

    spring-boot-mybatis-mysql.zip

    《Spring Boot整合MyBatis与MySQL的深度解析》 在当今的Java开发领域,Spring Boot以其简洁、快速的特性受到了广大开发者的喜爱。与此同时,MyBatis作为一款轻量级的持久层框架,以其灵活易用的特点在数据访问层面...

    struts+spring_ibaits+调用Mysql存储过程实现增删改查

    在本项目中,"struts+spring_ibaits+调用Mysql存储过程实现增删改查",意味着开发者利用这三个框架来处理数据库中的增、删、改、查(CRUD)操作,并通过调用MySQL的存储过程来实现这些功能。存储过程是预编译的SQL...

    activiti-spring-boot mysql版本

    activiti-spring-boot-starter-basic 版本:5.22.0 spring-boot-starter-parent 版本:2.1.4.RELEASE 在eclipse导入此项目可直接运行,学习activiti非常好的例子!...这是mysql版本,oracle版本在另外一个下载地址

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

    spring-boot,mysql,mybatis Java项目

    在本项目中,我们主要探讨的是如何将Spring Boot、MySQL和MyBatis三大技术进行有效集成,构建一个完整的Java应用程序。Spring Boot以其便捷的启动和管理特性,MySQL作为广泛使用的开源关系型数据库,以及MyBatis作为...

    spring-boot-jpa-mysql

    这个项目的核心目标是实现一键式开发和部署,提供API接口供外部调用,同时利用MySQL作为持久层的数据存储。 【描述】中的关键点主要涉及到以下几个方面: 1. **Spring Boot**: Spring Boot是一个简化Spring应用...

Global site tag (gtag.js) - Google Analytics