用hibernate调用存储过程
2017-03-24 20:39
363 查看
存储过程是将一组需要重复执行的操作封装在一起存放在服务器中,支持用户提供的变量,具有强大的编程功能, 可以使用各种sql语句和过程式语句的组合,来封装数据库应用中复杂的业务逻辑和处理规则.
2.将常用的操作集编写成存储过程,一次编写可多次使用,程度可重用
Hibernate中使用存储过程有很多种方法,
1. 使用hibernate命名查询
2. 使用JDBC的方法
大概方法如下
a) 获取hibernatesession
b) 用session获取Connection
c) 实例化ResultSet
d) CallableStatement call= conn.prepareCall(“{ 存储过程执行语句}”);
e) 返回数据,关闭数据库连接,和session连接
使用Hibernate中的SQLQuery接口执行
这个方法获取数据比较简单,今天就使用这个方法来查询数据
详细过程:
a) 创建表,使用DDL语句
代码部分:
DROP TABLE IF EXISTS
CREATE TABLE
PRIMARY KEY (
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
b) 向表内插入数据使用DML语句
代码部分
INSERT INTO
c) 创建存储过程
代码部分:
d),查询存储工程是否创建成功
在mysql客户端
show procedure status;
如创建成功,Navicat会显示结果条数
e),创建一个Hibernate项目,把导入相关jar包,配置hibernate.cfg.xml
代码测试部分
使用存储过程的优点就是: 1.存储过程是预编译的可执行代码,提高效率
2.将常用的操作集编写成存储过程,一次编写可多次使用,程度可重用
Hibernate中使用存储过程有很多种方法,
1. 使用hibernate命名查询
2. 使用JDBC的方法
大概方法如下
a) 获取hibernatesession
b) 用session获取Connection
c) 实例化ResultSet
d) CallableStatement call= conn.prepareCall(“{ 存储过程执行语句}”);
e) 返回数据,关闭数据库连接,和session连接
使用Hibernate中的SQLQuery接口执行
这个方法获取数据比较简单,今天就使用这个方法来查询数据
详细过程:
a) 创建表,使用DDL语句
代码部分:
DROP TABLE IF EXISTS
t_user;
CREATE TABLE
t_user(
user_idint(11) NOT NULL AUTO_INCREMENT,
user_namevarchar(30) NOT NULL,
user_pwdvarchar(20) DEFAULT NULL,
PRIMARY KEY (
user_id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
b) 向表内插入数据使用DML语句
代码部分
INSERT INTO
t_userVALUES(数值1,数值2,….);
c) 创建存储过程
代码部分:
create PROCEDURE selc_id(IN id varchar(20)) //创建一个名为selc_id的存储过程,传入一个参数 BEGIN set @variable1=CONCAT('%',id,'%'); //创建一个全局变量, IF id is null or id='' THEN select * from t_user; else select * from t_user where user_name like @variable1; END if; END
d),查询存储工程是否创建成功
在mysql客户端
show procedure status;
如创建成功,Navicat会显示结果条数
e),创建一个Hibernate项目,把导入相关jar包,配置hibernate.cfg.xml
代码测试部分
private SessionFactory sessionFact=HibernateSessionFactory.getSessionFactory(); private Session session= sessionFact.openSession(); String proc="{call selc_id(1) }"; SQLQuery query = session.createSQLQuery(proc); //query.setString(0, "admin"); //可以设置参数到语句中 //query.setString(1, "admin"); List list =query.list(); System.out.println(list.get(0));//这里获取到的是一个对象 session.close();//关闭会话 sessionFact.close();//关闭会话工厂
相关文章推荐
- hibernate调用mysql5.0存储过程
- hibernate中调用存储过程
- hibernate 调用存储过程
- Hibernate HQL基础 调用数据库存储过程
- Hibernate3.x调用存储过程【转】
- hibernate 中调用存储过程
- hibernate调用存储过程
- hibernate 调用存储过程 时间设置问题
- 通过hibernate去调用存储过程
- Hibernate调用存储过程
- Hibernate3.x调用存储过程
- hibernate调用存储过程
- hibernate 调用带输入输出参数的存储过程
- 通过hibernate去调用存储过程
- hibernate调用mysql中存储过程
- hibernate中调用存储过程
- Hibernate3.x调用存储过程
- hibernate中调用存储过程
- Hibernate DAO层调用存储过程方法
- Hibernate --调用存储过程