elementui后台對於樹結構的數據封裝問題


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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM