List<TreeListVo> oneList = treeMapper.selectOneList(); if (oneList!=null){ //遍历一级列表 for (TreeListVo l1 : oneList) { //将根节点的子数据查询出来 帮我优化
时间: 2024-01-31 21:04:04 浏览: 97
treeList的使用
5星 · 资源好评率100%
可以使用 MyBatis 的一对多查询,减少查询次数,提高查询效率。具体实现方式如下:
1. 修改 TreeListVo 类,新增 List<TreeListVo> children 属性,表示该节点的子节点列表。
2. 在 TreeMapper.xml 中编写一对多查询语句,示例如下:
```xml
<select id="selectOneListWithChildren" resultMap="treeListResult">
select *
from tree
where parent_id is null
order by sort asc
</select>
<resultMap id="treeListResult" type="TreeListVo">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="parent_id" property="parentId"/>
<result column="sort" property="sort"/>
<collection property="children" ofType="TreeListVo">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="parent_id" property="parentId"/>
<result column="sort" property="sort"/>
<collection property="children" ofType="TreeListVo">
...
</collection>
</collection>
</resultMap>
```
3. 在 TreeMapper 接口中新增 selectOneListWithChildren 方法:
```java
List<TreeListVo> selectOneListWithChildren();
```
4. 在代码中调用 selectOneListWithChildren 方法,即可一次性查询出所有根节点及其子节点列表:
```java
List<TreeListVo> oneList = treeMapper.selectOneListWithChildren();
```
阅读全文