java如何使用jooq连接3个表并迭代结果?
我有课程表,学生表,时间表
table course(id, name, ....),
table student(id, name, ...),
table schedule(id, c_id, s_id).
现在我想左键连接课程表和学生表
问题(1):
在jooq中连接这3个表的最佳方法是什么?我想是这样的:
TableLike<?> firstjoin = sql
.select()
.from(Tables.SCHEUDLE)
.leftOuterJoin(Tables.COURSE)
.on(Tables.SCHEDULE.CID.eq(Tables.COURSE.ID))
.asTable();
Result<?> result = sql
.select()
.from(firstjoin)
.leftOuterJoin(Tables.STUDENT)
.on(Tables.SCHEDULE.SID.eq(Tables.STUDENT.ID))
.fetch();
问题(2):
当我得到结果时,将结果分为学生对象和课程对象的最佳方式是什么?我的意思是因为类型是结果?,我们是否有办法将结果映射到学生、课程实体中,而不是繁琐地执行以下操作:
for(Record r: result){
Student s = new Student(r.filed(), r.filed()...);
Course c = new Course(r.filed(), r.filed()....)
}
# 1 楼答案
答案1
虽然您的查询是正确的,但我不会像您那样加入。您的方法创建一个派生表,该派生表
相反,只需在一条语句中连接两个表:
答案2
您可以使用各种}
Record.into()
方法之一,例如^{