Hibernate查询多个表的数据的方法

Hibernate的查询方式具有面向对象的思想

在查询的时候,都是动过gei(id)的方式查询一条数据,然后Hibernate自动设置进去到POJO类对象,返回一个代理类给我们

这里有两个类,就不写get()和set()方法了

学生类

public class Student {
	private int id;
	private String name;//姓名
	private String stuCode;//学号
	private String gender;//性别
	private String age;//年龄
	private int classId;//班级id
}

班级类

public class ClassInfo {
	private int Id;//班级id
	private String classCode;//班级编号
}
这种情况,如果一次要拿到学生的信息和班级信息

需要查询两次

第一次

Student stu = studentDao.get(id);

第二次

ClassInfo ci = classInfoDao.get(stu.getClassId());


或者

String hql = "SELECT s.name, s.stuCode, c.classCode FROM student AS s, classInfo AS c WHERE s.classId=c.id";

根据这个查询语句,调用query.list()方法得到一个List集合,
这个List中的每个对象都是Object类型,里面包含了查询出来的所有值。


但是Hibernate还支持另一种方式,就是增加一个新的映射类

这个新的映射类的属性,应该包含素有你需要查找的字段以及get()和set()方法

更重要的是,需要新增一个构造函数,这个构造函数的参数为你需要查询出来的属性,并且在构造函数里面为其赋值。

例如     【此处省略get()set()】

public class StuAndClass {
	
	//有参构造
	StuAndClass(String name, String stuCode, String classCode){
		this.name = name;
		this.stuCode = stuCode;
		this.classCode = classCode;
	}
	
	//用于接收查询结果的属性
	private String name;//姓名
	private String stuCode;//学号
	private String classCode;//班级编号
}

然后查询的时候

String hql = "SELECT new com.test.StuAndClass(s.name, s.stuCode, c.classCode) FROM Student AS s, ClassInfo AS c WHERE s.classId = c.id";

通过  query.list() 方法,得到 StuAndClass 的List集合







  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值