`
zhaoshijie
  • 浏览: 2261768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate调用MySql存储过程

阅读更多

关键字:hibernate调用MySql存储过程


Java代码 
CREATE   TABLE  `proctab` (  
`id`  int ( 11 )  NOT   NULL  auto_increment,  
`Name`  varchar ( 20 ),  
`age`  int ( 11 ),  
PRIMARY   KEY   (`id`)  


CREATE   TABLE  `proctab` (
`id`  int ( 11 )  NOT   NULL  auto_increment,
`Name`  varchar ( 20 ),
`age`  int ( 11 ),
PRIMARY   KEY   (`id`)
)

简单的存储过程
Java代码 
create   PROCEDURE  proc()  
begin  
    select   *   from  proctab;  
end ;  

create   PROCEDURE  proc()
begin
    select   *   from  proctab;
end ;

一种方法是通过hibernate传统的xml映射方式去调用
Java代码 
<class name="com.test.User" table="proctab">  
        <id name="id" column="id">  
            <generator class="native"/>  
        </id>  
        <property name="name" column="name" type="string" />  
        <property name="age" column="age" type="integer" />  
</class>  
   <sql-query name="getUser" callable="true">  
     <return alias="user" class="com.test.User">  
     <return-property name="id" column="id" />  
     <return-property name="name" column="name" />  
     <return-property name="age" column="age" />  
     </return>  
     {call proc()}  
   </sql-query> 

<class name="com.test.User" table="proctab">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name" type="string" />
        <property name="age" column="age" type="integer" />
</class>
   <sql-query name="getUser" callable="true">
     <return alias="user" class="com.test.User">
     <return-property name="id" column="id" />
     <return-property name="name" column="name" />
     <return-property name="age" column="age" />
     </return>
     {call proc()}
   </sql-query>

调用方法
Java代码 
Session ss= HibernateSessionFactory.getSession()  
List li=ss.getNamedQuery("getUser").list();  
ss.close(); 

        Session ss= HibernateSessionFactory.getSession()
        List li=ss.getNamedQuery("getUser").list();
        ss.close();

及其类似jdbc的方法
Java代码 
Session session =HibernateSessionFactory.getSession();   
Connection conn = session.connection();   
ResultSet rs =null;  
CallableStatement call = conn.prepareCall("{Call proc()}");  
rs = call.executeQuery();  
rs.close();  
session.close(); 

Session session =HibernateSessionFactory.getSession();
Connection conn = session.connection();
ResultSet rs =null;
CallableStatement call = conn.prepareCall("{Call proc()}");
rs = call.executeQuery();
rs.close();
session.close();

这种方法基本上就是jdbc,不过很简单,总是感觉怪怪的~!

还有就是通过强大的createSQLQuery来实现
o(∩_∩)o...哈哈  个人比较喜欢这种方法
Java代码 
Session session =HibernateSessionFactory.getSession();   
SQLQuery query = session.createSQLQuery("{Call proc()}");  
List list =query.list();  
session.close(); 

Session session =HibernateSessionFactory.getSession();
SQLQuery query = session.createSQLQuery("{Call proc()}");
List list =query.list();
session.close();

如果没有返回值 直接用execute的方法就可以了
(*^__^*)  忘了一个重要的问题就是存储过程的传参问题
Java代码 
CallableStatement call = conn.prepareCall("{Call proc(?)}");  
call.setString(1, 参数);  
rs = call.executeQuery(); 

CallableStatement call = conn.prepareCall("{Call proc(?)}");
call.setString(1, 参数);
rs = call.executeQuery();

Java代码 
SQLQuery query = session.createSQLQuery("{Call proc(?)}");  
query.setString(0, 参数);  
List list =query.list(); 
分享到:
评论

相关推荐

    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