- 浏览: 622288 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (334)
- java core (12)
- struts2.x (2)
- spring (3)
- hibernate (8)
- jpa (6)
- maven (2)
- osgi (5)
- eclipse (4)
- struts2.x+spring2.x+hibernate 整合 (5)
- ebs (0)
- html (0)
- vaadin (1)
- css (0)
- jquery (0)
- javascript (0)
- svn (1)
- cvs (0)
- axas2.x (0)
- eclipse+maven (9)
- annotation (0)
- 基于OSGi的动态化系统搭建 (1)
- notenet (1)
- jboss eclipse (4)
- eclipse工具 (4)
- jdk1.6+maven3.0.3+nuxeo+svn+felix+cxf+spring+springDM (6)
- spring dm (1)
- Nexus介绍 (1)
- proxool listener (0)
- oracle (4)
- mysql (8)
- 搭建你的全文检索 (1)
- hibernatehibernatehibernate (0)
- cvsearchcvsearch (0)
- mycvseach (0)
- asdfasdfasdf (0)
- propertiey (0)
- hibernate annotation (0)
- libs (0)
- icam (2)
- start 数据库配置 (0)
- jboss (1)
- 让Eclipse启动时显示选择workspace的对话框 (1)
- table表头固定 (1)
- s2s3h4 (0)
- leaver (0)
- mycvsaerchddd (0)
- 关于jboss5.0.1部署 (4)
- bookmarks (0)
- PersistenceUnitDeployment (0)
- mycom (0)
- HKEY_CURRENT_USER = &H80000001 (0)
- syspath (1)
- css div (1)
- Dreamweaver CS5 (0)
- generate (0)
- mysql查看表结构命令 (1)
- LOG IN ERROR EMAIL TO SB (0)
- struts2 handle static resource (1)
- jsf (2)
- log4j (1)
- jbpm4.4 (2)
- down: jbpm4.4 (1)
- jstl1.2 (1)
- spring annotation (1)
- java design pattern (1)
- cache (1)
- ehcache (1)
- 11111 (0)
- myge (0)
- pom.xml (0)
- springquartz (0)
- OpenStack (9)
- hadoop (2)
- nginx (1)
- hadoop openstack (1)
- os (1)
- hadoop-2.6.0 zookeeper-3.4.6 hbase-0.98.9-hadoop2 集群 (5)
- hadoop2.7.0 ha Spark (2)
- tess (0)
- system (1)
- asdf (0)
- hbase (2)
- hbase create table error (1)
- ekl (1)
- gitignore (1)
- gitlab-ci.yml (1)
- shell (1)
- elasticsearch (2)
- Azkaban 3.0+ (1)
- centos用命令 (1)
- hive (1)
- kafka (1)
- CaptureBasic (0)
- CentOS7 (1)
- dev tools (1)
- README.md (1)
- Error (1)
- teamviewerd.service (1)
- scala (1)
- spark (1)
- standard (1)
- gitlab (1)
- IDEA (0)
- ApplicationContext (1)
- 传统数仓 (1)
- redis install (1)
- MYSQL AND COLUME (1)
- java版本选择 (1)
- hue (1)
- npm (1)
- es (1)
- 版本管理 (1)
- 升级npm版本 (1)
- git (1)
- 服务器参数设置 (1)
- 调大 IDEA 编译内存大小 (0)
- CentOS8安装GitLab (1)
- gitlab安装使用 (1)
最新评论
-
ssydxa219:
vim /etc/security/limits.confvi ...
ekl -
Gamehu520:
table中无数据
hbase 出现的问题 -
Xleer0102:
为什么都是只有问没有答,哭晕在厕所
hbase 出现的问题 -
jiajiao_5413:
itext table -
CoderDream:
不完整,缺com.tcs.org.demostic.pub.u ...
struts2.3.1.1+hibernate3.6.9Final+spring3.1.0+proxool+maven+annotation
一. 建表与初始化数据
在mysql的test数据库中建立一张新表:tbl_user,建表语句如下:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `tbl_user` (
`userid` varchar(50) NOT NULL,
`name` varchar(50) default '',
`blog` varchar(50) default '',
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
建表成功后,在该表中任意插入几条数据。
二. 建立存储过程
为测试hibernate3.x中存储过程的调用,我们在user表中建立getUserList、createUser、updateUser和deleteUser这四个存储过程,在mysql中建立存储过程的语句如下:
1. 获得用户信息列表的存储过程--getUserList
DROP PROCEDURE IF EXISTS `getUserList`;
CREATE PROCEDURE `getUserList`()
begin
select * from tbl_user;
end;
2. 通过传入的参数创建用户的存储过程--createUser
DROP PROCEDURE IF EXISTS `createUser`;
CREATE PROCEDURE `createUser`(IN userid varchar(50), IN name varchar(50), IN blog varchar(50))
begin
insert into tbl_user values(userid, name, blog);
end;
3. 通过传入的参数更新用户信息的存储过程--updateUser
DROP PROCEDURE IF EXISTS `updateUser`;
CREATE PROCEDURE `updateUser`(IN nameValue varchar(50), IN blogValue varchar(50), IN useidValue varchar(50))
begin
update tbl_user set name = nameValue, blog = blogValue where userid = useridValue;
end;
4. 删除用户信息的存储过程--deleteUser
DROP PROCEDURE IF EXISTS `deleteUser`;
CREATE PROCEDURE `deleteUser`(IN useridValue int(11))
begin
delete from tbl_user where userid = useridValue;
private String userid;
/** 用户姓名*/
private String name;
/** 用户blog*/
private String blog;
//省略get/set方法
}
User.hbm.xml文件的内容如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.amigo.proc.model">
<class name="User" table="tbl_user">
<id name="userid" column="userid">
<generator class="assigned"/>
</id>
<property name="name" column="name" type="string" />
<property name="blog" column="blog" type="string" />
</class>
<sql-query name="getUserList" callable="true">
<return alias="user" class="User">
<return-property name="userid" column="userid"/>
<return-property name="name" column="name"/>
<return-property name="blog" column="blog" />
</return>
{call getUserList()}
</sql-query>
</hibernate-mapping>
在该文件中需注意<sql-query…></sql-query>中的这段代码,调用的存储过程在其中定义,并定义了调用存储过程后将记录组装成User对象,同时对记录的字段与对象的属性进行相关映射。
3. hibernate调用存储过程的测试类
本类是该例的核心类,在本类中,以实例清楚地说明了在hibernate中如何调用存储过程,例示了hibernate调用查询、更新、插入和删除这四类存储过程的方法,该类的内容如下:
// hibernate调用存储过程
public class ProcTest ...{
public static void main(String[] args) throws Exception ...{
ProcTest proc = new ProcTest();
Session session = HibernateSessionFactory.getSession();
proc.testProcQuery(session);
proc.testProcUpdate(session);
System.out.println("update successfully");
proc.testProcInsert(session);
System.out.println("insert successfully");
proc.testProcDelete(session);
System.out.println("delete successfully");
session.close();
}
// 测试实现查询的存储过程
private void testProcQuery(Session session) throws Exception ...{
//查询用户列表
List list = session.getNamedQuery("getUserList").list();
for (int i = 0; i < list.size(); i++) ...{
User user = (User) list.get(i);
System.out.print("序号: " + (i+1));
System.out.print(", userid: " + user.getUserid());
System.out.print(", name: " + user.getName());
System.out.println(", blog: " + user.getBlog());
}
}
/**//**
* 测试实现更新的存储过程
* @throws Exception
*/
private void testProcUpdate(Session session) throws Exception ...{
//更新用户信息
Transaction tx = session.beginTransaction();
Connection con = session.connection();
String procedure = "{call updateUser(?, ?, ?)}";
CallableStatement cstmt = con.prepareCall(procedure);
cstmt.setString(1, "ssydxa219");
cstmt.setString(2, "http://");
cstmt.setString(3, "sterning");
cstmt.executeUpdate();
tx.commit();
}
// 测试实现插入的存储过程
private void testProcInsert(Session session) throws Exception ...{
//创建用户信息
session.beginTransaction();
PreparedStatement st = session.connection().prepareStatement("{call
createUser(?, ?, ?)}");
st.setString(1, "amigo");
st.setString(2, "阿蜜果");
st.setString(3, "http://wwwsssssssss");
st.execute();
session.getTransaction().commit();
}
// 测试实现删除的存储过程
private void testProcDelete(Session session) throws Exception ...{
//删除用户信息
session.beginTransaction();
PreparedStatement st = session.connection().prepareStatement("{call deleteUser
(?)}");
st.setString(1, "amigo");
st.execute();
session.getTransaction().commit();
}
}
在本类中,调用查询类存储过程时,调用session.getNamedQuery("…")方法来获得User.hbm.xml中配置的查询存储过程。在其余的存储过程调用的测试中,首先通过hibernate的session获得connection,然后调用connection对象的相应方法来实现存储过程的调用。
发表评论
-
data struct
2013-01-20 23:37 0第1章 绪论 1.1 简述下列术语:数据,数据元素、数 ... -
svn
2012-12-22 12:16 957下面是具体的步骤。 ... -
solr
2012-03-12 14:55 17481.下載 Apache Solr Search Integra ... -
Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子
2012-03-02 10:30 16601. jbpm4.4 测试环境搭建 2. ... -
Could not instantiate bean class
2012-02-13 21:26 8306严重: Servlet.service() for servl ...
相关推荐
- **执行存储过程**:调用`executeUpdate`或`list`方法执行存储过程。对于无返回值的存储过程,通常使用`executeUpdate`;如果有结果集,可以使用`list`获取并处理结果。 - **处理结果**:如果存储过程返回结果,...
本文将深入探讨如何在Spring和Hibernate中执行存储过程,并基于描述中的例子进行解析。 首先,让我们了解Spring如何执行存储过程。Spring通过JdbcTemplate或NamedParameterJdbcTemplate提供存储过程的调用。...
hibernate本对数据库的操作有些不完美,有必要的时候可以调用存储过程来补足。
### Hibernate调用存储过程详解 #### 一、建立存储过程 在进行Hibernate调用存储过程之前,首先需要在数据库中创建存储过程。本例中创建了一个名为`getUserInfo`的简单存储过程,其功能是从`user`表中选择所有记录...
总结,使用Hibernate调用存储过程,无论是不带参数还是带参数返回值的,都需要创建SQL查询或`CallableStatement`,设置参数,执行存储过程,并处理返回结果。在处理过程中,需要注意事务管理,确保数据的一致性。...
调用存储过程时,我们需要创建一个Hibernate的Session对象,然后利用Session的`createSQLQuery`方法来执行存储过程。例如,调用`getUserList`过程可以写成: ```java Session session = HibernateUtil....
总结来说,Hibernate调用存储过程是通过`StoredProcedureQuery`对象实现的,提供了更简便的对象化API。对比JDBC,Hibernate更注重开发者体验,而JDBC则更适合对数据库操作有深度控制的需求。在实际开发中,根据项目...
在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...
在某些复杂场景下,比如需要执行存储过程或者复杂的SQL查询时,Hibernate也提供了相应的支持。以下我们将详细探讨如何在Hibernate中调用存储过程,并结合文档内容,讲解相关的知识点。 首先,存储过程是数据库中预...
然后,实现这个接口,使用Hibernate的`Session`对象调用`createSQLQuery`方法来执行存储过程。例如,调用`getUserList`的实现可能是: ```java public void getUserList() { Session session = HibernateUtil....
在Hibernate中调用这个存储过程,我们需要创建一个事务,获取数据库连接,然后通过CallableStatement对象执行存储过程: ```java Transaction tx = session.beginTransaction(); Connection con = session....
- 使用`Session.createSQLQuery()`方法创建SQLQuery对象,然后通过`addScalar()`指定返回值类型,`executeUpdate()`或`list()`执行存储过程。 3. **调用存储过程的方法** - **简单调用**:对于无参数或只接收输入...
3. **调用存储过程**:在Java代码中,你可以通过SessionFactory获取Session对象,然后使用`Session.createSQLQuery()`或`Session.doWork()`方法来执行存储过程。例如: ```java Session session = sessionFactory...
- 执行存储过程。 ```java SQLQuery sqlQuery = session.createSQLQuery("{call 漤(?)}"); sqlQuery.setString(0, "String"); sqlQuery.executeUpdate(); ``` 2. **使用JDBC API**: - 获取当前会话的连接...
- 执行存储过程。 ```java Session session = sessionFactory.openSession(); StoredProcedureQuery query = session.createStoredProcedureQuery("batchUpdateStudent"); // 设置输入参数(如果有的话) ...