如何将多表内连接查询结果映射至多个实体类?
三表内连接并映射为对应表记录类型的实现方法
要实现三表内连接查询并将结果分别映射到对应表的记录类型,按以下步骤操作:
- 首先在查询中包含三个表的全部(或所需)字段,保证映射时能获取到足够的数据
- 依次完成三次表的内连接,明确关联条件
- 对查询返回的每条记录,分别映射到对应的表记录类型
代码示例
假设你的三个表为A、B、C,关联条件为B.ID = A.B_ID和C.ID = A.C_ID,代码如下:
// 执行三表内连接查询 Result<Record> result = dslContext .select(A.fields(), B.fields(), C.fields()) .from(A) .innerJoin(B).on(B.ID.eq(A.B_ID)) .innerJoin(C).on(C.ID.eq(A.C_ID)) .fetch(); // 遍历结果,分别映射为三个表的记录对象 for (Record record : result) { ARecord aRecord = record.into(A); BRecord bRecord = record.into(B); CRecord cRecord = record.into(C); // 在这里使用三个记录对象进行后续操作 }
注意事项
- 如果不需要所有字段,需确保查询结果包含目标表记录类型所需的全部字段,否则映射后会缺失对应数据
- 若你使用的是jOOQ生成的实体类,
record.into(Table)方法会自动完成字段匹配映射
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

