Fre*_*Ren 4 java mapping join jooq
我有COURSE,STUDENT,SCHEDULE表.
table course(id, name, ....),
table student(id, name, ...),
table schedule(id, c_id, s_id).
Run Code Online (Sandbox Code Playgroud)
现在我想离开连接时间表与课程和学生表.
在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();
Run Code Online (Sandbox Code Playgroud)
当我得到结果时,将结果拆分为Student对象和Course对象的最佳方法是什么?我的意思是因为类型是结果?,有没有什么方法可以将结果映射到学生,课程实体而不是繁琐地做这样的事情:
for(Record r: result){
Student s = new Student(r.filed(), r.filed()...);
Course c = new Course(r.filed(), r.filed()....)
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*der 12
在jooq中加入这3个表的最佳方法是什么?我认为它就像[...]
虽然你的查询是正确的,但我不会像你那样加入.您的方法创建了一个派生表
相反,只需在一个语句中连接两个表:
Result<?> result = sql
.select()
.from(SCHEUDLE)
.leftOuterJoin(COURSE)
.on(SCHEDULE.CID.eq(COURSE.ID))
.leftOuterJoin(STUDENT)
.on(SCHEDULE.SID.eq(STUDENT.ID))
.fetch();
Run Code Online (Sandbox Code Playgroud)
您可以使用各种Record.into()方法之一,例如Record.into(Table)
for (Record r : result) {
StudentRecord s = r.into(STUDENT);
CourseRecord c = r.into(COURSE);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3574 次 |
| 最近记录: |