hibernate多表联查:多对一

以学生Student和班级Clazz多对一为例(单向多对一)

//Clazz类
public class Clazz {
	private Integer id;
	private String cname;
    //省略setter和getter
}

//Student类
public class Student {
	private Integer id;
	private String sname;
        //多对一关系
        private Clazz clazz;
	//省略setter和getter
}
<!--Clazz.hbm.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="join.model.Clazz" table="CLAZZ">
		<id name="id" column="ID">
			<generator class="increment"></generator>
		</id>
		<property name="cname" column="CNAME"></property>
	</class>
</hibernate-mapping>
<!--Student.hbm.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="join.model.Student" table="STUDENT">
		<id name="id" column="ID">
			<generator class="increment"></generator>
		</id>
        <property name="sname" column="SNAME"></property>
        
                <!-- 多对一 -->
                <!--
 		name:对类中pojo类型属性的说明(即对一方的说明)
		class:对pojo类型说明
		column:指定关联外键
		-->
		<many-to-one name="clazz" class="join.model.Clazz" column="CID"></many-to-one>
	</class>
</hibernate-mapping>
//StudentDao
public class StudentDao {

	public Student selectById(Integer id){
		
		Session session = HibernateUtil.findSession();
		
		return session.get(Student.class, id);
	}
}

 

//StudentService
public class StudentService {

	private StudentDao dao = new StudentDao();

	public Student findById(int id) {

		Session session = HibernateUtil.findSession();
		Transaction tx = session.beginTransaction();
		Student stu = null;
		try {
			stu = dao.selectById(id);
			// tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
		}
		return stu;
	}
}
//测试
@Test
public void testFindStudent() {

		Student stu = ser2.findById(1);
		System.out.println(stu.getId() + "," + stu.getSname());

		System.out.println(stu.getClazz().getCname());
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值