`
chaoyi
  • 浏览: 309587 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring+Jdbc scott用户的调用存储过程

 
阅读更多

本章使用的是 scott 用户

创建存储过程

create or replace procedure get_dept_name
(
       in_sn in number,
       out_dept_name out varchar2
)is
begin
     select d.dname
     into out_dept_name
     from emp e
     left join dept d
     on d.deptno = e.deptno
     where e.empno = in_sn;
end get_dept_name;

 

调用存储过程

declare
 dname varchar2(30);
begin
 get_dept_name(7698,dname);
 dbms_output.put_line(dname);
end;

 

测试存储过程的效果:

 

EmpDao 业务类

package cn.dao;
public interface EmpDao {
	/**
	 * 调用存储过程,通过员工的ID得到所在部门的名字
	 * @param sn
	 * @return
	 */
	public String getDeptNameByEmpSn(Integer sn);
}

 

package cn.dao.impl;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.CallableStatementCreator;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import cn.dao.EmpDao;
public class EmpDaoImpl extends JdbcDaoSupport implements EmpDao {
	public String getDeptNameByEmpSn(final Integer sn) {
		return super.getJdbcTemplate().execute(new CallableStatementCreator() {
			//实现 createCallableStatement 对象(创建存储过程)
			public CallableStatement createCallableStatement(Connection conn)
					throws SQLException {
				CallableStatement cs = conn.prepareCall("{call get_dept_name(?,?)}");
				cs.setInt(1, sn);
				cs.registerOutParameter(2, OracleTypes.VARCHAR);
				return cs;
			}
		}, new CallableStatementCallback<String>() {
			//实现 doInCallableStatement 对象(调用存储过程)
			public String doInCallableStatement(CallableStatement cs)
					throws SQLException, DataAccessException {
				cs.execute();
				return cs.getString(2);
			}
		});
	}
}

 

applicationContext.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
	<!-- 配置数据源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:oracle11" />
		<property name="username" value="scott" />
		<property name="password" value="tiger" />
	</bean>
	<!-- 配置 jdbc 模板并注入 dataSource -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 配置 Dao -->
	<bean id="empDao" class="cn.dao.impl.EmpDaoImpl">
		<property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>
</beans>

 

EmpTest 测试类

package cn.test;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.dao.EmpDao;
public class EmpTest {
	EmpDao empDao;
	static ApplicationContext ctx;
	@BeforeClass  
	public static void init(){
		ctx=new	ClassPathXmlApplicationContext("applicationContext.xml");
	}
	@Before 
	public void setUp(){
		empDao=(EmpDao) ctx.getBean("empDao");
	}

	@After
	public void tearDown(){
		empDao=null;
	}
	@AfterClass
	public static void destory(){
		ctx=null;
	}
	@Test
	//测试 存储过程是否调用成功
	public void testGetDeptName(){
		System.out.println(empDao.getDeptNameByEmpSn(7839));
	}
	
}

 

效果图:

 

 

 

  • 大小: 26.8 KB
  • 大小: 33 KB
分享到:
评论

相关推荐

    Spring+MyBatis scott用户根据 no 查找数据

    在"Spring+MyBatis scott用户根据no查找数据"这个主题中,我们关注的是如何通过Spring的IoC(Inversion of Control)容器管理和调用MyBatis来执行特定的查询。以下是一些关键知识点: 1. **Spring配置MyBatis**:在...

    Struts+Spring+Ibatis整合框架搭建配置文档

    jdbc.username=scott jdbc.password=tiger # MSSQL Server 示例 jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mssql jdbc....

    STRUTS+SPRING+HIBERNATE

    &lt;bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; &lt;value&gt;oracle.jdbc.driver.OracleDriver &lt;value&gt;jdbc:oracle:thin:@127.0.0.1:1521:yek &lt;value&gt;scott ...

    java调用oracle存储过程

    本篇文章将详细介绍如何通过Java与Oracle数据库交互,调用存储过程,并提供几个简单的实例帮助新手理解。 首先,Oracle存储过程是预编译的SQL语句集合,可以包含多个SQL语句和PL/SQL块。创建存储过程使用`CREATE OR...

    spring与hibernate的整合

    在 Spring 容器中创建 SessionFactory 是整合过程的第一步。SessionFactory 是 Hibernate 的核心组件,用于管理与数据库的会话。通过在 `ApplicationContext.xml` 配置文件中定义一个 bean,我们可以将数据库连接...

    Spring使用技巧

    除了使用Hibernate进行数据访问外,Spring还提供了强大的JDBC支持,简化了对JDBC的使用。 ##### 3.1 配置数据源 首先,需要在Spring配置文件中定义数据源(DataSource),例如使用Apache Commons DBCP的数据源。 ...

    使用MyEclipse整合ss2h

    - **编写Action类**:创建Action类,处理用户请求并调用业务逻辑层进行数据处理。 - **页面跳转**:配置好Action类与视图页面的映射关系,实现页面之间的跳转。 #### 三、总结 通过上述步骤,我们已经成功地在...

    ssh2连接多库注解方式

    5. **服务层调用**:在服务层使用@Autowired和@Qualifier进行注入,以实现对不同数据库的操作。 ```java @Service public class UserServiceImpl implements UserService { @Autowired @Qualifier(...

    java 编程语言书籍

    - **数组与方法的使用**:通过实际例子,展示如何在程序中使用数组存储和处理数据,以及如何定义和调用方法实现代码复用和模块化。 - **面向对象编程**:介绍类、对象、继承、封装、多态等核心概念,以及如何利用...

    javaweb,标签库,函数库,数据库连接池实例借鉴.pdf

    username="scott" password="tiger" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@192.168.1.20:1521:ora9" /&gt; ``` 4. **Tomcat配置**: - **`server.xml`**:Tomcat的核心配置文件,...

    mysql 之通过配置文件链接数据库

    在Java开发过程中,我们常常需要与数据库进行交互来完成数据的存储、查询等功能。对于大型项目来说,频繁地创建数据库连接对象不仅会消耗大量的系统资源,还可能导致性能下降。因此,通常采用单例模式来管理数据库...

    java面试题

    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger"); ``` 3. **创建语句**: ```java PreparedStatement ps = con.prepareStatement("select * from ...

Global site tag (gtag.js) - Google Analytics