`
a137268431
  • 浏览: 157651 次
文章分类
社区版块
存档分类
最新评论

hibernate调用mysql存储过程

 
阅读更多

 在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调用存储过程具体方法

    hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。

    java-hibernate调用mysql过程和函数的方式知识.pdf

    Java-Hibernate 调用 MySQL 过程和函数的方式知识 Java-Hibernate 框架中调用 MySQL 数据库中的过程和函数是通过 CallableStatement 对象来实现的。下面将详细介绍如何调用 MySQL 中的过程和函数。 调用函数 在 ...

    hibernate调用存储过程

    ### Hibernate调用存储过程详解 在企业级应用开发中,Hibernate作为一款优秀的对象关系映射(ORM)框架,被广泛应用于Java持久层解决方案。而存储过程作为一种预编译的SQL代码块,在数据库层面执行,提供了高性能的...

    java-hibernate调用mysql过程和函数的方式.pdf

    以下是Java-Hibernate调用MySQL过程和函数的详细步骤: 1. **调用函数** - 函数调用通常涉及到返回值和可能的输入参数。例如,调用名为`get_pname`的函数,该函数可能接受三个参数。使用`CallableStatement`创建一...

    java-hibernate调用mysql过程和函数的方式[归类].pdf

    下面将详细介绍如何在Java中利用Hibernate调用MySQL的存储过程和函数。 首先,我们需要理解CallableStatement接口,它是PreparedStatement的子接口,用于执行SQL存储过程。在Java中,我们通常使用CallableStatement...

    Hibernate3调用存储过程用法

    在Java的持久化框架Hibernate中,调用数据库的存储过程是一项常见的需求。本文将深入探讨在Hibernate3中如何实现这一功能,以及相关的知识点。 一、为什么要使用存储过程 存储过程是预编译的SQL语句集合,它们在...

    hibernate调用存储过程[参考].pdf

    【hibernate调用存储过程】在软件开发中,尤其是涉及到数据库操作的Java应用中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够极大地简化数据库操作。然而,有时我们可能需要使用到数据库的存储过程,这时...

    hibernate调用存储过程知识.pdf

    总结来说,这篇文章深入浅出地介绍了如何在Hibernate 3.x中使用存储过程,涵盖了创建存储过程、在Java代码中调用存储过程的关键步骤,为开发者提供了清晰的实践指导。这对于那些希望在Java应用中充分利用数据库功能...

    Struts2 + Hibernate + mysql

    Struts2、Hibernate和MySQL是Java Web开发中的三个重要组件,它们构成了经典的MVC(Model-View-Controller)架构中的关键技术。在这个框架中,Struts2作为表现层框架,负责处理用户请求并控制应用程序流程;...

    Spring+Hibernate+MySql的应用实例

    2. **src/main/resources**:存储配置文件,如Spring的bean配置(applicationContext.xml)、Hibernate的实体映射文件(hbm.xml)以及数据库连接配置(hibernate.cfg.xml)。 3. **WEB-INF**:Web应用的配置文件...

    Spring+Hibernate+Mysql简单搭建

    在Spring和Hibernate的整合中,Mysql作为后台存储,负责保存和检索数据。 整合Spring、Hibernate和Mysql的步骤大致如下: 1. **配置环境**:确保你的开发环境中已经安装了Java、Maven或Gradle(用于构建项目)、...

    spring3.0+hibernate3.3+mysql8.0

    在本项目中,我们关注的是一个经典的Java Web开发技术栈:Spring 3.0、Hibernate 3.3以及MySQL 8.0的整合。这个组合是企业级应用中常见的技术选型,它们各自承担着不同的职责,共同构建了一个强大、灵活且可扩展的...

    SpringMvc+Hibernate+MySql Demo 源码

    在Spring MVC + Hibernate的组合中,MySQL作为数据存储后端,存储和检索应用所需的数据。Hibernate通过JDBC与MySQL交互,执行SQL语句,完成数据的读写操作。 **整合过程** 整合Spring MVC、Hibernate和MySQL通常...

    struts+hibernate+mysql

    而MySQL作为数据存储,保存网站的所有数据。在实际操作中,开发者可能还需要使用其他技术,如JSP或Servlet来渲染视图,或者Spring框架来增强依赖注入和AOP(面向切面编程)功能。 总的来说,"struts+hibernate+...

    spring+hibernate+mysql整合Demo

    在Spring+Hibernate整合中,MySQL作为数据存储的后端,提供数据的存储和检索功能。 4. **整合流程** - **配置Spring** 首先,需要配置Spring的ApplicationContext,声明Bean定义,包括SessionFactory(Hibernate...

    Spring+Jersey+Hibernate+MySQL+HTML实现用户信息CRUD案例源码

    在项目中,用户信息被存储在MySQL的表中,通过Hibernate进行交互。 5. **HTML**:HTML是超文本标记语言,负责构建网页的结构。在这个案例中,HTML页面用于显示用户信息,并提供用户交互界面,如表单用于输入或编辑...

Global site tag (gtag.js) - Google Analytics