对象树到easyui树实现方式

本文介绍了如何使用MyBatis进行一对多查询,构建对象树,并将其展示到前端页面。重点阐述了配置、查询方法、业务调用以及对象树到前台节点显示的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


VO中配置list:

    1: public class SysFunctionVO implements Serializable {
            /**孩子节点**/
        private List<SysFunctionVO> sysFunctionVOList ;
        .....

    2 :public class EasyUITreeNode implements Serializable {

        /**序列号**/
        private static final long serialVersionUID = 8984229233079127698L;
        /**节点ID**/
        private String id;
        /**树节点名称**/
        private String text;
        /**前面的小图标样式**/
        private String iconCls;
        /**是否勾选状态**/
        private Boolean checked;
        /**其他参数**/
        private Map<String, Object> attributes;
        /**该节点是否展开**/
        private String state = "open";
        /**子节点**/
        private List<EasyUITreeNode> children ;//add by

一对多查询mybatis配置:

    <!--new add 根据父级获取子集返回对象 -->
    <resultMap id="cascadeLoadSysFunction" type="sysFunctionVO">
        <id property="sfId" column="sf_id" />
        <result property="sfParentId" column="sf_parent_id" />
        <result property="sfName" column="sf_name" />
        <result property="sfOrder" column="sf_order" />
        <result property="sfStatus" column="sf_status" />
        <collection property="sysFunctionVOList" column="sf_id" ofType="sysFunctionVO" javaType="java.util.ArrayList"
        select="findSysFunctionTree"></collection>

    </resultMap>

    <!--new add 根据父级id查询子级数据 -->
    <select id="findSysFunctionTree" resultMap="sysFunction.cascadeLoadSysFunction"  parameterType="string">
        select * from sys_function where sf_parent_id = #{sfId}  order by sf_order
    </select>

使用方法:
    public List<SysFunctionVO> findSysFunctionTree(String sfId) {
      return this.getSqlSession().selectList("sysFunction.findSysFunctionTree",sfId);

业务调用:可以传入任意的节点,这样就可以拿到从此节点向下的孩子节点,拿到对象树
    List<EasyUITreeNode> tree = new ArrayList<EasyUITreeNode>();
    EasyUITreeNode node = new EasyUITreeNode();//easyui树对应的根节点
    sysFunctionService.findSysFunctionTree("1");//返回对象树
    node.setId(vo.getSfId());
    node.setText(vo.getSfName());
    tree.add(node);//将easyui树根添加到list

将转换后的tree以json写回页面;

对象树到前台节点显示(传入根节点,页面定义的node,传入定义的tree):
    public List<EasyUITreeNode> getSysFunctionEasyUITree(SysFunctionVO vo,EasyUITreeNode node,List<EasyUITreeNode> tree){
        List<EasyUITreeNode> children = new ArrayList<EasyUITreeNode>();
        for(SysFunctionVO childVO :vo.getSysFunctionVOList()){
            EasyUITreeNode childNode = new EasyUITreeNode();
            childNode.setId(childVO.getSfId());
            childNode.setText(childVO.getSfName());
            if(lt.contains(Integer.parseInt(childVO.getSfId()))){//注意格式的转化
                childNode.setChecked(true);//初始化节点的选择状态
            }
            children.add(childNode);//孩子节点集合
            
            if(!childVO.getSysFunctionVOList().isEmpty()){
                getSysFunctionEasyUITree(lt,childVO,childNode,tree);//递归调用
            }
        }
        if(children.size()>0)
        {
            node.setChildren(children);//当前节点添加孩子节点
        }
        return tree;//返回树
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值