mybatisplus联表查右表为空的数据
时间: 2024-09-26 08:08:39 浏览: 35
mybatisplus分页查询
在MyBatisPlus中,如果你想要查询关联的两个表,其中一个表(右表)的所有数据为空,你可以通过编写动态SQL或者利用其提供的便捷方法来实现这个需求。这里提供一种常见的做法:
1. **动态SQL**:
- 使用`if`条件语句结合`COALESCE`函数(如果存在则返回值,否则返回NULL),可以检查关联字段是否为空。例如:
```sql
SELECT * FROM table1 left JOIN table2 ON table1.id = table2.table1_id
WHERE COALESCE(table2.field, '') IS NULL;
```
2. **MyBatisPlus的QueryWrapper**:
- 使用QueryWrapper的`eq()`、`isNull()`等方法结合左连接(left join)来筛选空数据,示例如下:
```java
QueryWrapper<Table1> wrapper = new QueryWrapper<>();
wrapper.leftJoin(Tables.TABLE2)
.eq(Table2.Field.FIELD_NAME, "") // 如果右表对应字段为空,则设置为 ""
.isNull(Table2::getId); // 或者直接检查关联ID是否为null
List<Table1> result = table1Service.list(wrapper);
```
注意:上述例子假设`table1`为主表,`table2`为右表,并且`table1_id`是主表关联右表的外键。
阅读全文