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-redis-mysql整合,前台为jquery,后台spring-mybatis
Maven-Spring-Spring-MVC-MyBatis-MySQL SSM整合
spring mvc + mybatis 调用mysql 存储过程
spring-JDBC的jar包整合,自用
Spring Boot使用spring-data-jpa配置Mysql多数据源,可用版本
eureka-producer-consumer:利用eureka实现服务提供与调用示例 spring-cloud-hystrix:Hystrix熔断的使用示例 hystrix-dashboard-turbine:熔断监控Hystrix Dashboard和Turbine的示例 spring-cloud-config-git:配置...
Struts2-spring-ibatis 整合及存储过程分页.
spring-boot+mysql+mybatis的整合,pom.xml中的资源库完美导入 spring-boot+mysql+mybatis的整合,pom.xml中的资源库完美导入
spring-boot,mysql,mybatis Java项目
此压缩文件中包含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-web.jar spring-web.jar
spring-boot整合mybatis-mysql
Spring-boot和Mysql学习demo
spring-boot2-master <h1>YouTube Channel...<a href="https://www.javaguides.net/2019/08/spring-boot-spring-jdbc-mysql-crud-example.html" target="_blank">Spring Boot + Spring JDBC + MySQL CRUD Example ...
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-...
dockercompose-springboot-mysql-nginx spring-boot-actuator spring-boot-banner spring-boot-docker spring-boot-elasticsearch spring-boot-jpa spring-boot-mail spring-boot-mongodb spring-boot-...
大厂面试题-java-mysql-redis-spring-zookeeper
使用Java struts+spring_ibaits+调用Mysql存储过程 实现增删改查
这个demo 希望可以帮助大家
spring-jdbc-4.3.6.RELEASE.jar