温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hibernate中怎么调用存储过程

发布时间:2021-06-24 16:16:28 来源:亿速云 阅读:277 作者:Leah 栏目:编程语言

Hibernate中怎么调用存储过程,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

下边是简单的Hibernate存储过程

Java代码:

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

Hibernate存储过程调用的一种方法是通过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的方法就可以了,(*^__^*)  忘了一个重要的问题就是Hibernate存储过程的传参问题


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中怎么调用存储过程的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI