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;//返回树
}