mybatisplus实现三表联查
时间: 2023-06-26 22:04:15 浏览: 113
Mybatis-plus 实现三表联查可以通过使用 Mybatis-plus 的 Wrapper 来实现。
举个例子,假设我们有三个表:A、B、C,它们之间的关系是 A 与 B 是一对多关系,B 与 C 是多对一关系。现在我们需要查询 A 表中的所有记录,并且关联查询 B 和 C 表中的相应记录。
首先我们需要在 A 对应的实体类中添加 B 和 C 的关联对象:
```java
public class A {
private Long id;
private String name;
private List<B> bs;
private C c;
// getters and setters
}
```
然后我们可以使用 Wrapper 来进行多表联查,具体代码如下:
```java
List<A> result = aMapper.selectList(new QueryWrapper<A>()
.select("a.id", "a.name", "b.id as b_id", "b.name as b_name", "c.id as c_id", "c.name as c_name")
.eq("a.deleted", 0)
.leftJoin("b", "b.a_id = a.id")
.leftJoin("c", "c.id = b.c_id"));
```
上面的代码中,我们使用了 `QueryWrapper` 对象来构建查询条件,使用了 `select` 方法来指定需要查询哪些字段,使用了 `leftJoin` 方法来进行多表关联查询。
需要注意的是,我们在查询 B 和 C 表的字段时,使用了 `as` 关键字来给字段起了别名,这样可以避免查询结果中的字段名冲突。
最后,我们需要在 A 对应的 Mapper 中添加对应的 SQL 方法:
```java
public interface AMapper extends BaseMapper<A> {
List<A> selectList(@Param(Constants.WRAPPER) Wrapper<A> wrapper);
}
```
这样就完成了三表联查的操作。
阅读全文