在mysql中创建两个存储过程,如下:
1、根据id查找某条数据:
1 CREATE PROCEDURE `findEmpById`(IN id INTEGER(11))
2 begin
3 select * from emp where empId=id;
4 end;
2、根据id查找某个字段,并返回
1 CREATE PROCEDURE `getNameById`(in id integer(11),out eName varchar(50))
2 begin
3 select empName into eName from emp where empId=id;
4 end;
在存储过程的参数列表里面,in修饰的参数代表输入参数,out修饰的代表输出参数。
使用hibernate调用上面两个存储过程:
(1)调用第一个存储过程
1 package com.test;
2
3 import java.sql.CallableStatement;
4 import java.sql.Connection;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7
8 import org.hibernate.Session;
9 import org.hibernate.SessionFactory;
10 import org.hibernate.cfg.Configuration;
11
12
13 public class 调用存储过程 {
14
15 /**
16 * @param args
17 * @throws SQLException
18 */
19 public static void main(String[] args) throws SQLException {
20 Configuration cfg = new Configuration().configure();
21 SessionFactory factory = cfg.buildSessionFactory();
22 Session session = factory.openSession();
23 Connection con = session.connection();
24 String sql = "{call findEmpById(?)}";
25 CallableStatement cs = con.prepareCall(sql);
26 cs.setObject(1, 2);
27 ResultSet rs = cs.executeQuery();
28 while(rs.next()){
29 int id = rs.getInt("empId");
30 String name = rs.getString("empName");
31 System.out.println(id+"\t"+name);
32 }
33 }
34
35 }
调用存储过程的sql语句为:call 存储过程名(参数...),不过在java中调用存储过程一般都加{}。调用存储过程使用的是CallableStatement。
(2)调用第二个存储过程
1 package com.test;
2
3 import java.sql.CallableStatement;
4 import java.sql.Connection;
5 import java.sql.SQLException;
6
7 import org.hibernate.Session;
8 import org.hibernate.SessionFactory;
9 import org.hibernate.cfg.Configuration;
10
11 public class 调用存储过程1 {
12
13
14 public static void main(String[] args) throws SQLException {
15 Configuration config = new Configuration().configure();
16 SessionFactory sessionFactory = config.buildSessionFactory();
17 Session session = sessionFactory.openSession();
18 Connection conn = session.connection();
19 String sql = "{call getNameById(?,?)}";
20 CallableStatement cs = conn.prepareCall(sql);
21 cs.setObject(1, 3); //设置输出参数
22 cs.registerOutParameter(2, java.sql.Types.VARCHAR); //设置第二个参数为输出参数
23 cs.execute(); //调用存储过程
24 String name = cs.getString(2);//获取输出参数
25 System.out.println(name);
26 }
27
28 }
如果有输出参数,需要特别指出,如上面的代码22行。
分享到:
相关推荐
hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。
Java-Hibernate 调用 MySQL 过程和函数的方式知识 Java-Hibernate 框架中调用 MySQL 数据库中的过程和函数是通过 CallableStatement 对象来实现的。下面将详细介绍如何调用 MySQL 中的过程和函数。 调用函数 在 ...
### Hibernate调用存储过程详解 在企业级应用开发中,Hibernate作为一款优秀的对象关系映射(ORM)框架,被广泛应用于Java持久层解决方案。而存储过程作为一种预编译的SQL代码块,在数据库层面执行,提供了高性能的...
以下是Java-Hibernate调用MySQL过程和函数的详细步骤: 1. **调用函数** - 函数调用通常涉及到返回值和可能的输入参数。例如,调用名为`get_pname`的函数,该函数可能接受三个参数。使用`CallableStatement`创建一...
下面将详细介绍如何在Java中利用Hibernate调用MySQL的存储过程和函数。 首先,我们需要理解CallableStatement接口,它是PreparedStatement的子接口,用于执行SQL存储过程。在Java中,我们通常使用CallableStatement...
在Java的持久化框架Hibernate中,调用数据库的存储过程是一项常见的需求。本文将深入探讨在Hibernate3中如何实现这一功能,以及相关的知识点。 一、为什么要使用存储过程 存储过程是预编译的SQL语句集合,它们在...
【hibernate调用存储过程】在软件开发中,尤其是涉及到数据库操作的Java应用中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够极大地简化数据库操作。然而,有时我们可能需要使用到数据库的存储过程,这时...
总结来说,这篇文章深入浅出地介绍了如何在Hibernate 3.x中使用存储过程,涵盖了创建存储过程、在Java代码中调用存储过程的关键步骤,为开发者提供了清晰的实践指导。这对于那些希望在Java应用中充分利用数据库功能...
Struts2、Hibernate和MySQL是Java Web开发中的三个重要组件,它们构成了经典的MVC(Model-View-Controller)架构中的关键技术。在这个框架中,Struts2作为表现层框架,负责处理用户请求并控制应用程序流程;...
2. **src/main/resources**:存储配置文件,如Spring的bean配置(applicationContext.xml)、Hibernate的实体映射文件(hbm.xml)以及数据库连接配置(hibernate.cfg.xml)。 3. **WEB-INF**:Web应用的配置文件...
在Spring和Hibernate的整合中,Mysql作为后台存储,负责保存和检索数据。 整合Spring、Hibernate和Mysql的步骤大致如下: 1. **配置环境**:确保你的开发环境中已经安装了Java、Maven或Gradle(用于构建项目)、...
在本项目中,我们关注的是一个经典的Java Web开发技术栈:Spring 3.0、Hibernate 3.3以及MySQL 8.0的整合。这个组合是企业级应用中常见的技术选型,它们各自承担着不同的职责,共同构建了一个强大、灵活且可扩展的...
在Spring MVC + Hibernate的组合中,MySQL作为数据存储后端,存储和检索应用所需的数据。Hibernate通过JDBC与MySQL交互,执行SQL语句,完成数据的读写操作。 **整合过程** 整合Spring MVC、Hibernate和MySQL通常...
而MySQL作为数据存储,保存网站的所有数据。在实际操作中,开发者可能还需要使用其他技术,如JSP或Servlet来渲染视图,或者Spring框架来增强依赖注入和AOP(面向切面编程)功能。 总的来说,"struts+hibernate+...
在Spring+Hibernate整合中,MySQL作为数据存储的后端,提供数据的存储和检索功能。 4. **整合流程** - **配置Spring** 首先,需要配置Spring的ApplicationContext,声明Bean定义,包括SessionFactory(Hibernate...
在项目中,用户信息被存储在MySQL的表中,通过Hibernate进行交互。 5. **HTML**:HTML是超文本标记语言,负责构建网页的结构。在这个案例中,HTML页面用于显示用户信息,并提供用户交互界面,如表单用于输入或编辑...