通过hibernate去调用存储过程
2012-01-05 08:21
423 查看
Java代码
CREATE TABLE `proctab` (
`id` int ( 11 ) NOT NULL auto_increment,
`Name` varchar ( 20 ),
`age` int ( 11 ),
PRIMARY KEY (`id`)
)
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>
调用方法
Java代码
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();
这种方法基本上就是jdbc,不过很简单,总是感觉怪怪的~!
还有就是通过强大的createSQLQuery来实现
o(∩_∩)o...哈哈 个人比较喜欢这种方法
Java代码
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();
Java代码
SQLQuery query = session.createSQLQuery("{Call proc(?)}");
query.setString(0, 参数);
List list =query.list();
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`) )
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();
SQLQuery query = session.createSQLQuery("{Call proc(?)}"); query.setString(0, 参数); List list =query.list();
相关文章推荐
- 通过hibernate去调用存储过程(未测试)
- 通过hibernate去调用存储过程
- 通过hibernate去调用存储过程
- 通过hibernate去调用存储过程
- 通过hibernate去调用存储过程
- 通过hibernate去调用存储过程
- 通过hibernate去调用存储过程
- hibernate调用存储过程
- Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL
- hibernate调用mysql存储过程
- hibernate调用存储过程,有输出参数
- Hibernate调用存储过程
- Hibernate3.x调用存储过程
- 通过 Hibernate 调用存储过程
- Hibernate 3.2 如何调用存储过程
- 创建oracle的存储过程,以及通过JDBC调用该存储过程
- spring HibernateTemplate调用存储过程
- hibernate调用mysql5.0存储过程
- Hibernate调用存储过程
- hibernate3 调用存储过程