本章使用的是 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)); } }
效果图:
相关推荐
在"Spring+MyBatis scott用户根据no查找数据"这个主题中,我们关注的是如何通过Spring的IoC(Inversion of Control)容器管理和调用MyBatis来执行特定的查询。以下是一些关键知识点: 1. **Spring配置MyBatis**:在...
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....
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <value>oracle.jdbc.driver.OracleDriver <value>jdbc:oracle:thin:@127.0.0.1:1521:yek <value>scott ...
本篇文章将详细介绍如何通过Java与Oracle数据库交互,调用存储过程,并提供几个简单的实例帮助新手理解。 首先,Oracle存储过程是预编译的SQL语句集合,可以包含多个SQL语句和PL/SQL块。创建存储过程使用`CREATE OR...
在 Spring 容器中创建 SessionFactory 是整合过程的第一步。SessionFactory 是 Hibernate 的核心组件,用于管理与数据库的会话。通过在 `ApplicationContext.xml` 配置文件中定义一个 bean,我们可以将数据库连接...
除了使用Hibernate进行数据访问外,Spring还提供了强大的JDBC支持,简化了对JDBC的使用。 ##### 3.1 配置数据源 首先,需要在Spring配置文件中定义数据源(DataSource),例如使用Apache Commons DBCP的数据源。 ...
- **编写Action类**:创建Action类,处理用户请求并调用业务逻辑层进行数据处理。 - **页面跳转**:配置好Action类与视图页面的映射关系,实现页面之间的跳转。 #### 三、总结 通过上述步骤,我们已经成功地在...
5. **服务层调用**:在服务层使用@Autowired和@Qualifier进行注入,以实现对不同数据库的操作。 ```java @Service public class UserServiceImpl implements UserService { @Autowired @Qualifier(...
- **数组与方法的使用**:通过实际例子,展示如何在程序中使用数组存储和处理数据,以及如何定义和调用方法实现代码复用和模块化。 - **面向对象编程**:介绍类、对象、继承、封装、多态等核心概念,以及如何利用...
username="scott" password="tiger" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@192.168.1.20:1521:ora9" /> ``` 4. **Tomcat配置**: - **`server.xml`**:Tomcat的核心配置文件,...
在Java开发过程中,我们常常需要与数据库进行交互来完成数据的存储、查询等功能。对于大型项目来说,频繁地创建数据库连接对象不仅会消耗大量的系统资源,还可能导致性能下降。因此,通常采用单例模式来管理数据库...
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger"); ``` 3. **创建语句**: ```java PreparedStatement ps = con.prepareStatement("select * from ...