mybaitplus join双表联查
时间: 2025-06-15 16:26:51 浏览: 7
### 使用 MyBatis-Plus 实现双表联查
MyBatis-Plus 提供了简洁的方式来进行多表联合查询,简化了传统 MyBatis 中复杂的 XML 配置和 SQL 编写过程。以下是具体实现方式:
#### 方法一:通过实体类映射关系配置
当两个表之间存在外键关联时,可以在对应的 Java 实体类中定义这种关系。
```java
// Entity A (Parent Table)
@Data
public class Parent {
private Long id;
@TableField(exist = false)
private List<Child> children; // 子表对象列表
}
// Entity B (Child Table)
@Data
public class Child {
private Long id;
private Long parentId; // 外键字段
}
```
为了使上述代码生效,在 Mapper 接口中继承 `BaseMapper` 并重载相应方法来处理复杂查询逻辑[^1]。
#### 方法二:利用 Wrapper 进行条件构建
对于更灵活的查询需求,可以借助 QueryWrapper 或 UpdateWrapper 来动态拼接 SQL 语句片段,从而完成跨表的数据检索工作。
```java
QueryWrapper<Parent> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("parent.id", child.getParentId());
List<Parent> parents = parentService.list(queryWrapper);
```
此段代码展示了如何基于子表记录去匹配父表的相关条目[^2]。
#### 方法三:编写自定义 SQL 查询
尽管 MyBatis-Plus 努力减少手写 SQL 的必要性,但在某些情况下仍需定制化 SQL 片段以满足特定业务场景的要求。此时可在 XML 文件内声明 SQL 脚本并调用之。
```xml
<select id="selectParentsAndChildren" resultType="map">
SELECT p.*, c.* FROM parent AS p LEFT JOIN child AS c ON p.id=c.parent_id WHERE ...
</select>
```
以上三种途径均可达成双表联查的目的,开发者可根据实际项目情况选取最合适的方案[^3]。
阅读全文
相关推荐
















