mybatisplus怎么实现多表联查
时间: 2023-07-07 15:35:22 浏览: 103
平直边界上的节点-mybatisplus 多租户架构(multi-tenancy)实现详解
MybatisPlus 实现多表联查可以使用 MybatisPlus 提供的 Wrapper 来构建 SQL,Wrapper 是一个条件构造抽象类,用于辅助进行条件构造,常用的有 QueryWrapper 和 UpdateWrapper。
下面以 QueryWrapper 为例来说明多表联查的实现方法。
假设有两张表 A 和 B,要实现 A 表和 B 表的联查,可以先创建一个 QueryWrapper 对象,然后使用 join 方法指定要联查的表和关联条件,最后进行查询操作。具体代码如下:
```
QueryWrapper<A> wrapper = new QueryWrapper<>();
wrapper.eq("a.id", 1) // 指定 A 表的条件
.join("b", "a.id = b.a_id") // 指定要联查的表和关联条件
.select("a.*, b.*"); // 指定要查询的字段,可以使用别名来避免字段名冲突
List<Map<String, Object>> list = aMapper.selectMaps(wrapper); // 执行查询操作
```
以上代码使用了 selectMaps 方法,返回的是一个 List<Map<String, Object>>,其中每个 Map 对象表示一条记录,key 是字段名,value 是字段值。如果需要返回实体对象,可以使用 selectList 方法,如下所示:
```
QueryWrapper<A> wrapper = new QueryWrapper<>();
wrapper.eq("a.id", 1)
.join("b", "a.id = b.a_id")
.select("a.*, b.*");
List<A> list = aMapper.selectList(wrapper); // 返回实体对象列表
```
需要注意的是,如果要实现多表联查,需要在 MybatisPlus 的配置文件中开启驼峰命名策略,以避免字段名和表名的大小写不一致导致的 SQL 执行错误。可以在配置文件中添加以下配置:
```
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
```
阅读全文