//本人使用的数据库是Mysql
//在数据库中分别创建两个表:sex表和muser表
数据库中的sex表和muser表片段
sex表:
muser表:
//然后对两个表逆向化工程
一:
//sex表逆向化工程之后得到Sex.java和Sex.hbm.xml两个文件
Sex.java文件:
package com.sex.bean;
import java.util.HashSet;
import java.util.Set;
import com.muser.bean.Muser;
/**
* Sex entity. @author MyEclipse Persistence Tools
*/
public class Sex implements java.io.Serializable {
// Fields
private Integer sexKey;
private String sexValue;
private Set<Muser> muSet=new HashSet<Muser>();//set集合手动生成,生成它的get和set方法,用来存放muser表中的数据
// Constructors
/** default constructor */
public Sex() {
}
public Set<Muser> getMuSet() {
return muSet;
}
public void setMuSet(Set<Muser> muSet) {
this.muSet = muSet;
}
/** full constructor */
public Sex(String sexValue) {
this.sexValue = sexValue;
}
// Property accessors
public Integer getSexKey() {
return this.sexKey;
}
public void setSexKey(Integer sexKey) {
this.sexKey = sexKey;
}
public String getSexValue() {
return this.sexValue;
}
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
}
Sex.hbm.xml文件:
<hibernate-mapping>
<class name="com.sex.bean.Sex" table="sex" catalog="hibernate">
<id name="sexKey" type="java.lang.Integer">
<column name="sexKey" />
<generator class="native" />
</id>
<property name="sexValue" type="java.lang.String">
<column name="sexValue" length="20" />
</property>
<set name="muSet">
<key column="sex"></key>
<one-to-many class="com.muser.bean.Muser"/><!-- 一对多,所以应指向Muser中的数据,将数据放在set集合中 -->
</set>
</class>
</hibernate-mapping>
二:
muser表逆向化工程之后得到Muser.java和Muser.hbm.xml两个文件
Muser.java文件:
package com.muser.bean;
import com.sex.bean.Sex;
/**
* Muser entity. @author MyEclipse Persistence Tools
*/
public class Muser implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private String password;
private Sex sex; //一定要将自动生成的Integer数据类型改成Sex,用于调用Sex类中的getSexValue()方法,显示男女性别
// Constructors
/** default constructor */
public Muser() {
}
/** full constructor */
public Muser(String name, String password, Sex sex) {
this.name = name;
this.password = password;
this.sex = sex;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Sex getSex() {
return this.sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
}
Muser.hbm.xml文件:
<hibernate-mapping>
<class name="com.muser.bean.Muser" table="muser" catalog="hibernate">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="30" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="100" />
</property>
<!-- 在使用下面的 <many-to-one>关系映射时,要提前把逆向化工程自动生成的sex删掉,否则运行时会找不到这个属性-->
<many-to-one name="sex" class="com.sex.bean.Sex"><!-- 此sex是Muser类中所声明Sex对象 -->
<column name="sex" precision="8" scale="0"></column><!-- 此sex是数据库muser表中的sex字段 -->
</many-to-one>
</class>
</hibernate-mapping>
三:最后创建一个测试类ReflectTest
用于显示出数据库中数据
package com.muser.test;
import java.util.List;
import java.util.Set;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import com.muser.bean.Muser;
import com.sex.bean.Sex;
public class ReflectTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration config=new Configuration().configure();
SessionFactory sf=config.buildSessionFactory();
Session session=sf.openSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("from Sex");
List<Sex> list=query.list();
for(Sex sex:list){
// System.out.println("key:"+s.getSexValue());
// System.out.println("姓名为:"+s.getMuser());
Set<Muser> userSet=sex.getMuSet();
for(Muser us:userSet){
System.out.println("姓名:"+us.getName());
System.out.println("密码:"+us.getPassword());
System.out.println("性别:"+us.getSex().getSexValue());
}
}
session.close();
sf.close();
}
}
分享到:
相关推荐
NULL 博文链接:https://hw1287789687.iteye.com/blog/1950201
Hibernate映射一对多关联关系
Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
Hibernate一对多映射
hibernate基于 一对多、多对一映射写的一个增加,查询,删除,修改的demo,内附数据库脚本
1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1:一对多和多对一映射,举例说明: 学生和老师: 一个老师可以教多个学生 【一对多映射】 多个学生可以被一个老师教【多对一映射】 部门与员工: ...
Hibernate一对多,多对一映射
hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
hibernate关联映射详解SSH 多对多,一对多关系对象映射
Hibernate持久化映射一对多和多对一
Hibernate映射关系一对多 源代码
Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚
Hibernate双向一对一关联映射(注解版)
Hibernate对象关系映射一对多 很基础等文档
hibernate初学者学习入门之一对多实体映射关系源码
使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。
Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向...
Hibernate 多表映射关系配置 如,一对一 多对一 多对多等