首先定义VO(value object) 值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
/**
* @author QiuQiu&LL
* @create 2021-07-10 18:20
* @Description:
*/
@Data
public class SubjectVo implements Serializable {
private String id;
private String title;
private Integer sort;
// 存放子节点
private List<SubjectVo> children = new ArrayList<>();
}
Controller
// 展示列表数据
@ApiOperation("嵌套数据列表")
@PostMapping("/nested-list")
public R nestedList() {
List<SubjectVo> subjectVoList = subjectService.nestList();
return R.ok().data("items", subjectVoList);
}
Service
List<SubjectVo> nestList();
ServiceImpl
@Override
public List<SubjectVo> nestList() {
return baseMapper.selectNestedListByParentId("0");
}
Dao
/**
* 获取树形结构数据
* @param parentId
* @return
*/
List<SubjectVo> selectNestedListByParentId(String parentId);
<resultMap id="nestedSubject" type="com.qbb.zxjy.service.edu.entity.vo.SubjectVo">
<id property="id" column="id"/>
<result property="title" column="title"/>
<result property="sort" column="sort"/>
<collection property="children"
column="id"
select="selectNestedListByParentId"
ofType="com.qbb.zxjy.service.edu.entity.vo.SubjectVo"/>
</resultMap>
<select id="selectNestedListByParentId" resultMap="nestedSubject">
select id, sort, title from edu_subject where parent_id = #{parentId}
</select>
测试