- 浏览: 3263 次
- 性别:
- 来自: 成都
最近访客 更多访客>>
文章分类
最新评论
-
2001430:
ok,你把timestamp和date类型的数据显示一下,谢谢 ...
Hibernate两表的增、删、查、改的操作 -
liucl_tiger:
<div class="quote_title ...
Hibernate两表的增、删、查、改的操作 -
pyzheng:
楼主很不错 但是我还很疑问Transaction tra = ...
Hibernate两表的增、删、查、改的操作 -
zhu410289616:
学习了。。。
Hibernate两表的增、删、查、改的操作 -
Ethip:
学习&支持!
Hibernate两表的增、删、查、改的操作
Student.java
package com.egt.vo; public class Student implements java.io.Serializable { private Long id; private Stuinfo stuinfo = new Stuinfo(); private String name; private String pass; /** default constructor */ public Student() { } /** minimal constructor */ public Student(Long id) { this.id = id; } /** full constructor */ public Student(Long id, Stuinfo stuinfo, String name, String pass) { this.id = id; this.stuinfo = stuinfo; this.name = name; this.pass = pass; } // Property accessors public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public Stuinfo getStuinfo() { return this.stuinfo; } public void setStuinfo(Stuinfo stuinfo) { this.stuinfo = stuinfo; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPass() { return this.pass; } public void setPass(String pass) { this.pass = pass; } }
Student.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.egt.vo.Student" table="STUDENT" schema="CHEN"> <id name="id" type="java.lang.Long"> <column name="ID" precision="22" scale="0" /> <generator class="increment" /> </id> <many-to-one name="stuinfo" class="com.egt.vo.Stuinfo" fetch="select" cascade="all"> <column name="STUID" precision="22" scale="0" /> </many-to-one> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="pass" type="java.lang.String"> <column name="PASS" /> </property> </class> </hibernate-mapping>
Stuinfo.java
package com.egt.vo; import java.util.HashSet; import java.util.Set; /** * Stuinfo generated by MyEclipse - Hibernate Tools */ public class Stuinfo implements java.io.Serializable { // Fields private Long stuid; private String sex; private Long age; private Set students = new HashSet(0); // Constructors /** default constructor */ public Stuinfo() { } /** minimal constructor */ public Stuinfo(Long stuid) { this.stuid = stuid; } /** full constructor */ public Stuinfo(Long stuid, String sex, Long age, Set students) { this.stuid = stuid; this.sex = sex; this.age = age; this.students = students; } // Property accessors public Long getStuid() { return this.stuid; } public void setStuid(Long stuid) { this.stuid = stuid; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public Long getAge() { return this.age; } public void setAge(Long age) { this.age = age; } public Set getStudents() { return this.students; } public void setStudents(Set students) { this.students = students; } }
Stuinfo.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.egt.vo.Stuinfo" table="STUINFO" schema="CHEN"> <id name="stuid" type="java.lang.Long"> <column name="STUID" precision="22" scale="0" /> <generator class="increment" /> </id> <property name="sex" type="java.lang.String"> <column name="SEX" /> </property> <property name="age" type="java.lang.Long"> <column name="AGE" precision="22" scale="0" /> </property> <set name="students" inverse="true" cascade="all"> <key> <column name="STUID" precision="22" scale="0" /> </key> <one-to-many class="com.egt.vo.Student" /> </set> </class> </hibernate-mapping>
Hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.Oracle9Dialect </property> <property name="connection.url"> jdbc:oracle:thin:@127.0.0.1:1521:DB </property> <property name="connection.username">chen</property> <property name="connection.password">123</property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="myeclipse.connection.profile">DB</property> <property name="show_sql">true</property> <mapping resource="com/egt/vo/Student.hbm.xml" /> <mapping resource="com/egt/vo/Stuinfo.hbm.xml" /> </session-factory> </hibernate-configuration>
以下是对两表中的相应的增、删、查、改的操作的方法;
package com.egt.dao; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.egt.vo.Student; import com.egt.vo.Stuinfo; public class Dao { Session session; public Dao(){ Configuration con = new Configuration().configure(); SessionFactory sessionFactory = con.buildSessionFactory(); session = sessionFactory.openSession(); } public void sel(){ String hql = "from Student student left join fetch student.stuinfo info where student.stuinfo = info.stuid "; Query query = this.session.createQuery(hql);//编译查询语句; List list = query.list();//将结果放入一个容器中; System.out.println("姓名"+" "+"密码" ); //以循环的方式把所有的记录都输出来; for(int i=0;i<list.size();i++){ Student stu = (Student)list.get(i); System.out.println(stu.getName()+"|| "+stu.getPass()+" ||"+stu.getId()+" ||"+stu.getStuinfo().getSex()+" ||"+stu.getStuinfo().getAge());; } session.close();//关闭事务; } public void add(Student vo){ Transaction tra = session.beginTransaction();//创建一个事务; Stuinfo stuinfo = vo.getStuinfo();//得到stuinfo表中的信息; session.save(stuinfo);//保存子表的信息; session.save(vo);//保存主表的信息; tra.commit();//提交事务; session.close();//关闭session对象; } public void del(Student vo){ Transaction tra = session.beginTransaction();//创建一个事务; String hql = "from Student where id="+vo.getId();//查询要删除的记录的ID号; Query query = session.createQuery(hql);//编译查询语句; Student student = (Student) query.list().get(0);//将查询出来的记录放入一个对象中; session.delete(student);//将查询出来的记录给删除; tra.commit();//提交事务; session.close();//关闭session对象; } public void upd(Student vo){ Transaction tra = session.beginTransaction();//创建一个事务; session.saveOrUpdate(vo);//调用修改方法; tra.commit();//提交事务; session.close();//关闭事务; } public Student getStudent(Student stu){ String hql = "from Student where id="+stu.getId();//查询要修改的记录的ID号; Query q = session.createQuery(hql);//编译查询语句; Student stu1 = (Student) q.list().get(0);//把查询到的记录放入到一个对象中; System.out.println(stu1.getName()+" "+stu1.getPass()+" "+stu1.getId()+" "+stu1.getStuinfo().getSex()+" "+stu1.getStuinfo().getAge()); // Transaction tra = session.beginTransaction(); // tra.commit(); // session.close(); return stu1;//把值返回; // return (Student) session.load(Student.class,stu.getId()); } }
对以上的方法的调用;
package com.egt.daoImp; import com.egt.dao.Dao; import com.egt.vo.Student; import com.egt.vo.Stuinfo; public class DaoImp { /** * @param args */ public static void main(String[] args) { // 查询两表中所有的记录; Dao dao = new Dao(); // dao.sel(); //向两表添加一条数据; // Student student = new Student();//创建一个对象; // Stuinfo info = new Stuinfo(); // info.setAge(333L);//设置stuinfo表中的年龄、性别的值; // info.setSex("1"); // student.setName("ses you");//设置主表student表中的姓名、密码的值; // student.setPass("123456"); // student.setStuinfo(info);//将了表stuinfo中的值保存到表中; // dao.add(student);//将主表student中的值保存到表中; //以ID号来删除两表中的记录; // Student student = new Student();//创建一个对象; // Stuinfo info = new Stuinfo(); // student.setId(15L);//设置主表中要删除的ID字段的值; // dao.del(student);//删除主表中对ID号的字段,子表中的记录也随着删除; //以ID号得到的记录来修改记录; Student student = new Student();//创建一个对象; student.setId(14L);//设置主表中ID号的值; Student stu = dao.getStudent(student);//调用DAO中以ID号来查询单条记录的方法; stu.setName("来吧");//设置主表中要修改的字段的值; stu.setPass("liucljik"); Stuinfo info = stu.getStuinfo();//以学生来找到对应的学生信息; info.setAge(99L);//设置子表中要修改的字段的值; info.setSex("0"); stu.setStuinfo(info);//修改子表中的对应字段的值; dao.upd(stu);//修改主表中的对应字段的值; //以ID号来查询单一的记录; // Student stu = new Student();//创建一个对象; // stu.setId(3L);//设置要查询的记录的ID号; // System.out.println(stu.getName()+" "+stu.getPass()+" "+stu.getId()+" "+stu.getStuinfo().getSex()+" "+stu.getStuinfo().getAge()); // dao.getStudent(stu);//调用方法; } }
这是自己写的一个两表的增、删、查、改的操作;
如有错误,请指出,我是一个刚接触编程的菜鸟;
以下是我所操作的数据库表;
- two.rar (1.4 KB)
- 下载次数: 108
评论
8 楼
2001430
2009-07-13
ok,你把timestamp和date类型的数据显示一下,谢谢~!
7 楼
liucl_tiger
2008-11-20
pyzheng 写道
楼主很不错 但是我还很疑问Transaction tra = session.beginTransaction();//创建一个事务; Stuinfo stuinfo = vo.getStuinfo();//得到stuinfo表中的信息; session.save(stuinfo);//保存子表的信息; session.save(vo);//保存主表的信息; tra.commit();//提交事务; session.close();//关闭session对象;------------------------------------看你这里 我都分不清哪个是子表哪个是主表了<set name="students" inverse="true" cascade="all"> <key> <column name="STUID" precision="22" scale="0" /> </key> <one-to-many class="com.egt.vo.Student" /> </set> -----------------主表应该是Stuinfo吧?
我这里的主表是student,子表是stuinfo!
6 楼
pyzheng
2008-11-12
楼主很不错 但是我还很疑问
Transaction tra = session.beginTransaction();//创建一个事务;
Stuinfo stuinfo = vo.getStuinfo();//得到stuinfo表中的信息;
session.save(stuinfo);//保存子表的信息;
session.save(vo);//保存主表的信息;
tra.commit();//提交事务;
session.close();//关闭session对象;
------------------------------------
看你这里 我都分不清哪个是子表哪个是主表了
<set name="students" inverse="true" cascade="all">
<key>
<column name="STUID" precision="22" scale="0" />
</key>
<one-to-many class="com.egt.vo.Student" />
</set>
-----------------
主表应该是Stuinfo吧?
Transaction tra = session.beginTransaction();//创建一个事务;
Stuinfo stuinfo = vo.getStuinfo();//得到stuinfo表中的信息;
session.save(stuinfo);//保存子表的信息;
session.save(vo);//保存主表的信息;
tra.commit();//提交事务;
session.close();//关闭session对象;
------------------------------------
看你这里 我都分不清哪个是子表哪个是主表了
<set name="students" inverse="true" cascade="all">
<key>
<column name="STUID" precision="22" scale="0" />
</key>
<one-to-many class="com.egt.vo.Student" />
</set>
-----------------
主表应该是Stuinfo吧?
5 楼
zhu410289616
2008-11-07
学习了。。。
4 楼
Ethip
2008-11-07
学习&支持!
3 楼
liucl_tiger
2008-11-07
有什么不对的地方还请多多指出!
2 楼
winner720
2008-11-07
有反馈的的学习,学会分享了了。好样的
1 楼
lkjust08
2008-11-07
LZ写的不错,加油呼
相关推荐
本文将深入探讨如何使用Spring4和Hibernate4实现数据库的增删改查操作,以及在这个过程中可能涉及的关键知识点。 首先,Spring4是一个全面的Java应用程序框架,它提供了一种方式来管理组件(或称为bean)之间的依赖...
综上所述,"Struts2+Hibernate的增删改查"项目是一个典型的Java Web开发示例,涵盖了前端请求处理、后端数据库操作、业务逻辑封装等多个层面,对于初学者来说,这是一个很好的学习和实践平台。通过这个项目,开发者...
在IT行业中,开发Web应用程序时,常常需要对数据库进行数据操作,这通常涉及到"增删改查"(CRUD)的基本功能。"Hibernate+Struts"是一个常见的Java Web开发框架组合,它们一起提供了强大的后端数据处理能力。下面将...
总之,"spring+struts2+hibernate框架双表增删改查"项目为初学者提供了一个完整的实战平台,通过这个项目,学习者可以深入理解这三个框架如何协同工作,实现复杂的数据操作,同时掌握Java Web开发的基本流程和技巧。...
在IT行业中,构建一个完整的Web应用常常涉及到多个技术的整合,本项目就是一个很好的例子,它采用了"Myeclipse+MySQL+Hibernate+Struts2"的技术栈来实现数据的增删改查功能。这是一个典型的企业级应用架构,适用于...
《Hibernate的增删改查操作详解》 在Java Web开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate如何进行增删改查(CRUD)操作,旨在帮助开发者更好地理解...
在这个"struts+hibernate+mysql做的增删改查小例子"中,我们将深入探讨这三个技术如何协同工作来实现数据的CRUD(Create、Read、Update、Delete)操作。 首先,Struts是一个基于MVC设计模式的Java框架,它主要用于...
将这两者结合起来,可以有效地实现对数据库的增删改查操作,提高开发效率。 首先,理解Struts2的核心概念。Struts2框架基于拦截器模型,通过Action类和配置文件来管理请求与响应。它提供了一种灵活的方式来处理用户...
本教程将详细介绍如何将这两个框架整合起来,实现一个完整的用户注册和单表数据的增删改查功能,使用MySQL作为后台数据库。 **1. Struts2框架** Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java ...
在这个主题下,我们将深入探讨Hibernate如何实现数据库的增删改查(CRUD)操作。 ### 增加(Create) 在Hibernate中,增加数据通常是通过`Session`对象的`save()`或`saveOrUpdate()`方法完成的。首先,你需要创建...
在"Struts+hibernate实现增删改查功能"的项目中,开发者可能已经完成了以下步骤: 1. **配置环境**:安装JDK、Tomcat服务器、Struts和Hibernate的相关库,配置好环境变量。 2. **数据库设计**:创建MySQL数据库,...
使用jsf1.2+spring3.0+hibernate3.3实现集成,利用annotation实现自动对象管理注入,用户表的登录增删改查操作,包括验证码ajax集成,消息机制,国际化处理,自定义转换器,自定义验证器等 qq:38732796 欢迎讨论
基于Struts 2+Hibernate实现员工管理系统。一个单位有多个部门,每个部门有多名员工,每个员工只属于一个部门。基于该要求,实现员工和部门的管理(包括添加、查询、删除和修改等操作),并且要实现部门与员工之间的...
hibernate+struts实现jsp增删改查分页! hibernate实现对数据库的操作,struts实现对表单的操作! 实现了分页功能! (注:本本项目中文会出现乱码,我还没有解决!附有数据库文件!)
标题中的“hibernate_10增删改查DAO”暗示了本次讨论的主题是关于Hibernate框架在数据库操作中的应用,特别是涉及到数据的插入(Insert)、删除(Delete)、更新(Update)以及查询(Query)功能,并且是通过DAO...
本文将详细介绍如何利用Struts2和Hibernate实现对单表的增删改查操作。 #### 二、环境搭建 1. **Web.xml配置**: ```xml xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi=...
在本项目中,"使用springmvc+hibernate完成增删改查"意味着开发者已经配置好了SpringMVC和Hibernate的环境,能够通过这两个框架进行数据操作。数据无需创建自动生成,可能指的是使用了Hibernate的自动建表功能,或者...
对于某个数据库的单独一个表的增删改查操作,简单易懂可移植性强。需要配合mysql数据库,由于只有一个表,只需要按照java文件里面的建一个database叫chinasoft,再添一个表就可以看到实例的操作效果了,非常简单,...
本教程将详细介绍如何利用Spring3和Hibernate3实现用户管理系统的增删改查功能,非常适合初学者入门。 Spring是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,帮助...