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代碼實現封裝(推薦使用)