selectJoinList 关联两张相同的表
时间: 2024-01-21 12:18:58 浏览: 29
在关联两张相同的表时,需要为它们分别定义别名,以便在SQL语句中能够区分它们。例如,如果我们有一个名为“users”的表,并且想要将它与自身进行关联,我们可以这样写:
```
SELECT u1.name, u2.name
FROM users u1
JOIN users u2 ON u1.id = u2.parent_id
```
在这个例子中,我们为第一个“users”表定义了别名“u1”,为第二个“users”表定义了别名“u2”,并且使用“ON”关键字指定了它们之间的关联条件。这将返回一个列表,其中包含每个用户及其父用户的名称。
相关问题
mybatisplus多表关联查询sql
在MyBatis-Plus中进行多表关联查询可以使用wrapper进行操作。首先创建一个QueryWrapper对象,然后通过eq()方法指定关联的条件,例如eq("user.id", 1L)。接下来使用selectMaps()方法执行关联查询操作,并传入QueryWrapper对象作为参数,最后将结果存储在List<Map<String, Object>>对象中。以下是一个示例代码:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user.id", 1L);
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
```
需要注意的是,联表查询时,selectJoinList()方法的第一个参数是查询结果集映射的实体类,在示例中是ProductVO.class。可以使用select()方法指定需要查询的字段,使用selectAs()方法进行字段别名设置。使用leftJoin()方法可以进行多表联接操作,指定关联的表和关系字段。最后,通过调用selectJoinList()方法执行联表查询操作。以下是一个示例代码:
```java
List<ProductVO> two = productMapper.selectJoinList(ProductVO.class, new MPJLambdaWrapper<Product>()
.select(Product::getCode, Product::getName)
.selectAs(Factory::getCode, ProductVO::getFactoryCode)
.selectAs(Factory::getName, ProductVO::getFactoryName)
.leftJoin(Factory.class, Factory::getCode, Product::getFactoryCode)
);
```
在上述代码中,使用select()方法指定了Product表的code和name字段,使用selectAs()方法进行字段别名设置,将Factory表的code字段映射到ProductVO类的factoryCode字段,将Factory表的name字段映射到ProductVO类的factoryName字段。使用leftJoin()方法进行Product表和Factory表的联接操作,指定关联字段。最后,将联表查询的结果存储在List<ProductVO>对象中。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Mybatis-Plus多表关联查询的使用](https://blog.csdn.net/weixin_47261870/article/details/127156740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [MyBatis-Plus多表关联查询](https://blog.csdn.net/weixin_70506521/article/details/130722631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
mybatisplus怎么多表联查
MyBatis-Plus提供了两种方式进行多表关联查询。第一种方式是使用MyBatis-Plus的SQL构建器(MPJLambdaWrapper),可以通过select、selectAs、leftJoin等方法进行多表关联查询。第二种方式是使用MyBatis-Plus提供的wrapper进行关联查询操作,可以通过QueryWrapper等方法进行多表关联查询。在使用这两种方式进行多表联查时,需要注意查询结果集映射的实体类和联表查询时selectJoinList()方法的第一个参数为查询结果集映射的实体类。同时,还需要注意联表查询时leftJoin()方法的三个参数:联入表实体、联入表关系字段、原表关系字段。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)