`
yinbinhome
  • 浏览: 122877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

mysql 5.0存贮过程 调用

阅读更多

Hibernate中使用Mysql存储过程
1、我使用了mysql-connector-java-5.0.0-beta-bin.jar(其实用老的mysql-connector-java-3.1.8-bin.jar也可以调用存储过程的)这个最新的mysql驱动。
2、数据库我使用了mysql-5.0.18-win32,安装后建立了一个简单的数据表。
sql如下:


create database testprocedure;
use testprocedure;
create table testtable (id int(11) AUTO_INCREMENT, content varchar(255), readcount int(11) DEFAULT 0,primary key (id));
desc testtable;(查看是否建立正确)


3、建立一个专用的用户(可选,建立时请使用具有grant权限的用户如root):


grant select,delete,update,create,alter,execute on testtable.* to testprocedure@"localhost" identified by "test";

用户名为testprocedure,密码test。注意权限中的execute,它就是执行call procedure的权限。在你的Hibernate配置中使用该帐户。
4、建立一个存储过程:
sql如下:

java代码:

delimiter //
(注意//是新的命令结束符,方便我们建立procedure)
create procedure readcountplusone (inputid int)
begin
update testtable set readcount = readcount + 1 where id = inputid;
end//
(建立存储过程完毕)
delimiter ;
(恢复命令结束符为;)

5、测试一下存储过程:

java代码:

insert into testtable values (null,'test',0);
select * from testtable;
call readcountplusone(1);
select * from testtable;

应该看到原先readcount为0,call以后变成1,而且每次call都加1。
如果执行有错,可以删除procedure重新建立。
删除的命令为drop procedure readcountplusone;
6、开始在我们的Hibernate+Spring support项目中使用procedure:
HBM映射我们不说了,这里没有使用named query。Hibernate+Spring的配置这里也不多说了,应该可以搜寻到很多文章。
我的DAO是extends HibernateDAO,具体的使用方法可以参照其他很多讲Spring hibernate support的文章。
我们建立一个方法,比较丑陋(只是测试,大家有好方法可以提),假设对应testtable的pojo为TestPojo,它的getId()返回id对应的值:

java代码:

public void readCountPlusOne(final TestPojo pojo) {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
try {
Connection conn = session.connection();

String sql = "{call readcountplusone(?)}";
CallableStatement stmt = conn.prepareCall(sql);
stmt.setLong(1, pojo.getId().longValue());
stmt.execute();
} catch (Exception e) {
if(log.isDebugEnable){
log.debug("call DAO
's readCountPlusOne() faild, with Exception:");
e.printStackTrace();
}
}

return null;
}
});
}

7、然后我们在我们的bussiness中调用readCountPlusOne方法既可实现通过Hibernate调用一个简单的Mysql存储过程。

分享到:
评论

相关推荐

    MySQL5.0存储过程

    SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。...

    jdbc调用mysql5.0的存储过程和方法

    CallableStatement 调用mysql5.0的存储过程和方法 配有创建存储过程和方法的源代码

    小题大做之MySQL 5.0存储过程编程入门(转)

    MySQL 5.0 存储过程编程入门是数据库管理领域中的一个重要话题,它涉及到数据库的高级功能,使得数据库系统能够执行复杂的逻辑操作,提高数据处理的效率和安全性。存储过程是一组预先编译的SQL语句,可以在需要时被...

    MySQL 5.0存储过程

    MySQL 5.0存储过程是数据库管理中的一个重要概念,它是一种预编译的SQL语句集合,可以在数据库中被封装并作为一个独立的可执行单元。存储过程极大地提高了数据库的性能和安全性,因为它减少了网络流量,使得多次使用...

    \MySQL 5.0 存储过程.pdf

    根据提供的文档信息,本文将深入解析《MySQL 5.0 存储过程》这一主题,重点探讨存储过程的概念、特点以及在 MySQL 5.0 中的应用。存储过程是数据库管理系统中一项重要的功能,它允许开发者编写可重用的 SQL 代码块,...

    MySQL 5.0 存储过程

    ### MySQL 5.0 存储过程核心知识点详解 #### 引言 随着数据库技术的发展,MySQL 5.0 版本引入了一系列重要的新特性,其中最值得关注的是**存储过程**的功能增强。这一功能不仅提高了数据库操作的灵活性,还极大地...

    mysql5.0官方存储过程翻译

    MySQL存储过程是数据库管理系统中的一个重要组成部分,特别是在MySQL 5.0版本中,它提供了一种组织和执行复杂SQL语句的高效方式。本资料集合包含了对MySQL 5.0官方存储过程的详细翻译,旨在帮助学习者深入理解并熟练...

    MySQL+5.0存储过程

    10. **嵌套存储过程**:MySQL 5.0允许在一个存储过程中调用另一个存储过程,实现更复杂的逻辑结构。 通过了解和掌握这些特性,开发者能够更有效地利用MySQL 5.0存储过程来构建高效、可靠的数据库应用。提供的...

    mysql5.0存储过程学习总结资料.pdf

    通过上述内容,我们对MySQL 5.0的存储过程有了全面的认识,包括它们的创建、调用、删除,以及在过程中如何使用条件语句、循环结构和各种函数。这不仅提高了数据库操作的效率,也简化了复杂的业务逻辑实现。

    mysql5.0中文使用手册

    9. **存储过程和函数**:讲解如何创建、调用和管理存储过程和自定义函数,以及它们在数据库编程中的作用。 10. **触发器**:说明触发器的工作原理,如何定义触发器并在特定事件(如INSERT、UPDATE或DELETE)发生时...

    mysql5.0中英文对照手册

    MySQL 5.0是数据库管理系统领域中广泛应用的一个版本,它为开发者提供了强大的数据存储和管理功能。本手册旨在深入解析MySQL 5.0的各种特性和功能,帮助用户更好地理解和使用这个数据库系统。以下是对手册中可能包含...

    mysql 5.0 jdbc jar文件.rar

    在MySQL 5.0.4版本中,支持的特性可能包括那时MySQL数据库的所有最新功能,如事务处理、存储过程调用、预编译的SQL语句(PreparedStatement)以及连接池管理。然而,值得注意的是,随着时间的推移,更现代的MySQL...

Global site tag (gtag.js) - Google Analytics