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(); }
浙公网安备 33010602011771号