//本人使用的数据库是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(); } }