spring boot mybatis puls 查找一个表的所有数据,并带出他对应子类的总数
时间: 2023-12-06 20:45:19 浏览: 36
假设有一个表`parent`和另一个表`child`,`parent`表中有一个主键`id`,`child`表中有一个外键`parent_id`,表示`child`表中的数据属于`parent`表中的某一行数据。
首先,我们需要定义`Parent`和`Child`两个实体类,以及对应的Mapper接口:
```java
public class Parent {
private Long id;
private String name;
private List<Child> children;
// getter and setter
}
public class Child {
private Long id;
private String name;
private Long parentId;
// getter and setter
}
public interface ParentMapper {
List<Parent> findAllWithChildrenCount();
}
```
然后,在`ParentMapper`接口中定义`findAllWithChildrenCount`方法,该方法可以使用`LEFT JOIN`查询`parent`和`child`表,并统计每行数据对应的`child`表中的记录总数:
```xml
<select id="findAllWithChildrenCount" resultType="Parent">
SELECT p.id, p.name, COUNT(c.id) AS childrenCount
FROM parent p LEFT JOIN child c ON p.id = c.parent_id
GROUP BY p.id
</select>
```
最后,在Spring Boot应用中注入`ParentMapper`,即可调用`findAllWithChildrenCount`方法获取每行数据和对应的子类总数:
```java
@Service
public class ParentService {
@Autowired
private ParentMapper parentMapper;
public List<Parent> findAllWithChildrenCount() {
return parentMapper.findAllWithChildrenCount();
}
}
```