`
zengbo0710
  • 浏览: 414899 次
社区版块
存档分类
最新评论

Hibernate调用mysql5.0存储过程小记

阅读更多
1.hibernate3

  到这下载hibernate3:http://sourceforge.net/project/showfiles.phpgroup_id=40712&package_id=
127784&release_id=403223

  2.mysql (注意一定要用mysql5.0和最新驱动)
 
  mysql官方网站http://www.mysql.com/

 
  过程:

  1.建张表

<!----> CREATE TABLE `proctest` (`id` int ( 11 ) NOT NULL auto_increment,`Name` varchar ( 20 ) default '''''' ,`age` int ( 11 ) default NULL ,`address` varchar ( 50 ) default '' ,PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARSET = gb2312;

  2.插入几条记录

<!----> INSERT INTO `proctest` VALUES ( 1 , ' tom ' , 22 , 'http://www.blogjava.net ' );INSERT INTO `proctest` VALUES ( 2 , ' wujun ' , 25 , 'http://www.blogjava.net/wujun ' );INSERT INTO `proctest` VALUES ( 3 , ' jerry ' , 30 , ' 深圳 ' );INSERT INTO `proctest` VALUES ( 4 , ' wujun ' , 40 , ' 南昌 ' );

  3.创建存储过程
 
  -- 这只是一个例子,就来个简单存储过程

<!----> create PROCEDURE testProc() begin select * from proctest; end ;

  打开eclipce新建个java工程,记得把hiberbate3类库也一起加进去。

  看下结构图:

  新建UserVO.java文件

<!---->package net.wj.proc.vo;public class UserVO {private int id;private String name;private int age;private String address;public UserVO(){}


  顺便把它相对应的配置文件也写上。

  UserVO.hbm.xml 

<!----><?xml version="1.0" encoding='UTF-8'?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><!-- DO NOT EDIT: This is a generated file that is synchronized --><!-- by MyEclipse Hibernate tool integration. --><!-- Created Sat Apr 22 17:08:56 CST 2006 --><hibernate-mapping> <class name="net.wj.proc.vo.UserVO" table="proctest"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name" type="string" /> <property name="age" column="age" type="integer" /> <property name="address" column="address" type="string" /> </class> <!--sql查询--> <sql-query name="select"> <![CDATA[select {usr.*} from proctest usr ]]> <return alias="usr" class="net.wj.proc.vo.UserVO" /> </sql-query> <!--调用存储过程就在这里配了--> <sql-query name="getUser" callable="true"> <return alias="user" class="net.wj.proc.vo.UserVO"> <return-property name="id" column="id" /> <return-property name="name" column="name" /> <return-property name="age" column="age" /> <return-property name="address" column="address" /> </return> <!--这里就是我们刚刚创建的存储过程名--> {call testProc()} </sql-query></hibernate-mapping>
  测试代码 
<!---->package net.wj.proc.test;import java.util.List;import org.hibernate.*;import org.hibernate.cfg.*;import net.wj.proc.vo.*;import org.apache.log4j.*;public class ProcTest {/** *//*** @param args*/ Logger log=Logger.getLogger(this.getClass());public ProcTest(){}public static void main(String[] args) {System.out.print("start.............................");ProcTest tt=new ProcTest();// tt.LoadAll();// tt.ExampleSelect(); tt.ExampleProc();}//得到Session, public Session getSession(){try {Configuration cfg = new Configuration().configure();SessionFactory sf=cfg.buildSessionFactory();Session ss= sf.openSession();return ss;}catch(Exception ee){System.out.print("失败"+ee.getMessage());return null;}}//这里调我们在UserVO.hbm.xml//sql-query 写上的name属性getUser public void ExampleProc(){Session ss=this.getSession();List li=ss.getNamedQuery("getUser").list();for(int i=0;i<li.size();i++){UserVO vo=(UserVO)li.get(i);log.info("name:"+vo.getName());log.info("age"+vo.getAge());log.info("address"+vo.getAddress());}ss.close();}//配置文件的sql查询 public void ExampleSelect(){Session ss=this.getSession();List li= ss.getNamedQuery("select").list();for(int i=0;i<li.size();i++){UserVO vo=(UserVO)li.get(i);log.info("name:"+vo.getName());log.info("age"+vo.getAge());log.info("address"+vo.getAddress());}ss.close();}}

  记的用最新的驱动:

  要不然可能会报这个错

<!---->Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(
SQLStateConverter.java:
91) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2148) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) at org.hibernate.loader.Loader.list(Loader.java:2024) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:111) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1674) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:147) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:164) at net.wj.proc.test.ProcTest.ExampleProc(ProcTest.java:45) at net.wj.proc.test.ProcTest.main(ProcTest.java:22)Caused by: java.sql.SQLException: Callable statments not supported. at com.mysql.jdbc.Connection.prepareCall(Connection.java:1278) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:439) at org.hibernate.jdbc.AbstractBatcher.prepareCallableQueryStatement(AbstractBatcher.java:115) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1557) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2145) 8 more09:38:18,837 INFO SessionFactoryImpl:153 - building session factory09:38:18,917 WARN Configurator:126 - No configuration found.
Configuring ehcache from ehcache
-failsafe.xml found in the classpath:
jar:file:
/E:/lib/hibernate3/ehcache-1.1.jar!/ehcache-failsafe.xml09:38:21,951 INFO SessionFactoryObjectFactory:
82 - Not binding factory to JNDI, no JNDI name configuredHibernate: ...{call testProc()}09:38:22,482 WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: S1C0009:38:22,482 ERROR JDBCExceptionReporter:72 - Callable statments not supported.

  源代码http://www.blogjava.net/Files/wujun/Proc.rar

  是不是挺简单的。



分享到:
评论

相关推荐

    Struts+Hibernate+MySQL5.0的OA系统

    这个系统利用了MVC(Model-View-Controller)架构模式,通过Struts作为表现层框架,Hibernate作为持久层框架,以及MySQL5.0作为数据库管理系统,实现了数据的存储和业务逻辑处理。 Struts是Apache基金会下的一个...

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

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

    hibernate调用存储过程

    hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程 hibernate调用存储过程

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    Struts2+Hibernate3.0+mysql5.0

    Struts2、Hibernate3.0和MySQL5.0是经典的Java Web开发技术栈,它们各自在Web应用架构中承担着不同的角色。这篇文章将详细介绍这三个组件的整合与使用,以及在Eclipse开发环境中如何进行集成开发。 **Struts2** 是...

    hibernate调用存储过程具体方法

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

    使用hibernate调用oracle的存储过程

    在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。

    java连接mysql 5.0代码

    MySQL 5.0是该数据库管理系统的一个版本,提供了稳定性和性能的提升。Java JDBC(Java Database Connectivity)是Java平台标准的一部分,它提供了一套API,使得Java程序能够与各种类型的数据库进行交互,包括MySQL。...

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

    在Java开发中,Hibernate是一个流行的持久层框架,它简化了数据库操作,包括调用MySQL中的存储过程和函数。本篇将详细讲解如何使用Hibernate调用MySQL的存储过程和函数。 首先,调用MySQL的函数通常涉及到`...

    Hibernate5.0 jar包

    hibernate5.0jar包,包括:antlr-2.7.7.jar、dom4j-1.6.1.jar、geronimo-jta_1.1_spec-1.1.1.jar、hibernate-commons-annotations-5.0.0.Final.jar、hibernate-core-5.0.0.Final.jar、hibernate-jpa-2.1-api-1.0.0....

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

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

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

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

    hibernate和MySQL的jar

    标题中的“hibernate和MySQL的jar”指的是Hibernate ORM框架与MySQL数据库之间的连接库。Hibernate是一种流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL...

    Hibernate5.0用户手册中文版本

    Hibernate 5.0 用户手册中文版本知识点总结 Hibernate 是一个基于 Java 的关系型持久层框架,它提供了一个高效、灵活的解决方案来存储和检索数据。本手册是 Hibernate 5.0 的中文版本,旨在帮助开发者快速掌握 ...

    hibernate调用存储过程的方法调用

    Hibernate作为Java领域内广泛使用的对象关系映射(ORM)框架,提供了调用数据库存储过程的能力。本文将深入探讨如何使用Hibernate调用存储过程,并结合提供的资源文件——`proc.sql`、`hibernateProc.sql`和`...

    hibernate框架调用存储过程

    本篇文章将深入探讨如何在Hibernate框架中调用存储过程,并与JDBC调用存储过程的方式进行比较。 首先,我们要了解存储过程是什么。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可被多次调用,减少了网络...

Global site tag (gtag.js) - Google Analytics