1.我們需要像前台展示數據為(需求分析)


后台的數據為這種模式,

在elementui中我們看到了他的展示方式為這種方式
我們的想法為:返回一個list集合,然后這個集合中只帶有父節點,把子元素裝入父節點,這樣就形成了我們需要的結構形式了
2.實現方式
2.1,通過select直接把我們需要的結構查詢出來(如果數據庫過大,查詢效率低下)
controller
/** * 拿到數結構中的數據 * 對於這個樹結構我們只需要拿到父節點即可 */ @RequestMapping(value = "/treeData",method = RequestMethod.GET) @ResponseBody public List<CourseType> treeData() { return courseTypeService.getTopParent(); }
因為我們直接從數據庫把所有結構查詢出來,所以我們不使用
在在Java類型中添加一個list集合
/** * 自連接,我們查詢出來的數據需要使用有子節點, * 並且符合前端的需求用於做數的前台展示 */ private List<CourseType> children;
其他的沒什么區別
mapper中的
分為兩步
1.查詢所有的父節點
2.通過查詢的父節點id找到所有的子元素
<!-- 通用查詢映射結果 -->
<resultMap id="BaseResultMap" type="cn.jiedada.hrm.domain.CourseType">
<id column="id" property="id" />
<result column="createTime" property="createTime" />
<result column="updateTime" property="updateTime" />
<result column="name" property="name" />
<result column="pid" property="pid" />
<result column="logo" property="logo" />
<result column="description" property="description" />
<result column="sortIndex" property="sortIndex" />
<result column="path" property="path" />
<result column="totalCount" property="totalCount" />
<!--
property:該類的字段
select:sql
column:sql的的參數條件
-->
<collection property="children" select="selectAllChildren" column="id" javaType="arraylist"
ofType="cn.jiedada.hrm.domain.CourseType">
<id column="id" property="id" />
<result column="createTime" property="createTime" />
<result column="updateTime" property="updateTime" />
<result column="name" property="name" />
<result column="pid" property="pid" />
<result column="logo" property="logo" />
<result column="description" property="description" />
<result column="sortIndex" property="sortIndex" />
<result column="path" property="path" />
<result column="totalCount" property="totalCount" />
</collection>
</resultMap>
<!--通過查詢所有父節點查詢到父節點,獲得id找到所有的子節點-->
<select id="selectAllChildren" resultMap="BaseResultMap">
SELECT
<include refid="basicField"></include>
FROM t_course_type
WHERE pid=#{id}
</select>
<!--查詢所有父節點-->
<select id="selectTopParent" resultMap="BaseResultMap">
SELECT
<include refid="basicField"></include>
FROM t_course_type
WHERE pid=0
</select>
<sql id="basicField">
id,
createTime,
updateTime,
name,
pid,
logo,
description,
sortIndex,
path,
totalCount
</sql>
2.2,先把我們需要的表的所有數據查詢出來,在通過我們自己操作Java代碼實現封裝(推薦使用)
