hibernate之many2one

public class Emp {
//员工表,多的一方
    private Integer id;
    private String name;
    private double salary;
    private Date hireDate;
    private Date lastLogin;
    private boolean register;
    private Dept dept;
//get set 略
}
<?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">
<hibernate-mapping package="com.entity">
    <class name="Emp" table="t_emp">
        <id name="id" type="integer" column="t_id">
            <!-- 用来指明主键的生成方式 -->
                <generator class="identity">
                </generator>
        </id>
        <property name="name" type="string" column="t_name" />
        <property name="salary" type="double" column="t_salary" />
        <property name="hireDate" type="date" column="t_hire_date" />
        <property name="lastLogin" type="timestamp" column="t_last_login" />
        <property name="register" type="yes_no" column="t_register" />
        <!-- 在多的一方配置文件中配置一的表明和主鍵 -->
        <many-to-one name="dept" class="Dept" lazy="false" fetch="join"
        column="t_dept_id"/>

    </class>
</hibernate-mapping>

 

public class Dept {
//部门表,一的一方
    private Integer id;
    private String name;
    private String location;
//get set略
}
<?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">
<hibernate-mapping package="com.entity">
    <class name="Dept" table="t_dept">
        <id name="id" type="integer" column="t_id">
            <!-- 用来指明主键的生成方式 -->
                <generator class="identity">
                </generator>
        </id>
        <property name="name" type="string" column="t_name" />
        <property name="location" type="string" column="t_loc" />
    </class>
</hibernate-mapping>

 

配置文件

<?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.MySQLDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/tarena</property>
        <property name="connection.username">root</property>
        <property name="connection.password">zhujn</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="myeclipse.connection.profile">newland</property>
    <property name="hibernate.show_sql">true</property>
    <!-- 在配置文件中关联映射文件 -->
<mapping resource="com/entity/Emp.hbm.xml" />
<mapping resource="com/entity/Dept.hbm.xml" />
    </session-factory>

</hibernate-configuration>

添加

@Test
    public void test() {
        //构建Emp对象
        Emp emp = new Emp();
        emp.setName("BigYellow");
        emp.setHireDate(new Date());
        emp.setLastLogin(new Date());
        emp.setSalary(30000);
        emp.setRegister(true);
        //构建Dept对象
        Dept dept = new Dept();
        dept.setId(1);
        //设置Emp对象的Dept属性
        //emp对象dept属性的id将存入t_emp表中的t_dept_id
        emp.setDept(dept);
        Session session = HibernateUtils.openSession();
        Transaction tx = session.beginTransaction();
        session.save(emp);
        tx.commit();
        session.close();
    }

查询

 * 查詢指定部門的所有員工
     */
    @Test
    public void testQueryEmp2() {
        Session session = HibernateUtils2.getSession();
        Query query = session
        .createQuery("from Emp e left outer join fetch e.dept where e.dept.name=?");
        //注意和JDBC的区别,第一个参数从0开始;自劢匹配类型
        query.setParameter(0, "r&d");
        List<Emp> empList = query.list();
        for (Emp emp : empList) {
        System.out.println(emp.getName());
        System.out.println(emp.getDept().getName());
        }
        HibernateUtils2.closeSession();
    }

 

 

posted on 2017-03-02 11:17  南神  阅读(149)  评论(0)    收藏  举报