Mybatis之高级映射collection (递归查出树形数据 )

来源:互联网 发布:淘宝质量问题退货邮费 编辑:程序博客网 时间:2024/05/18 13:30

第一步:创建树形数据Bean

public class DeptTree {
private String id;
private String name;
private List<DeptTree> childrenList;//子节点
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<DeptTree> getChildrenList() {
return childrenList;
}
public void setChildrenList(List<DeptTree> childrenList) {
this.childrenList = childrenList;
}
}


第二步:mybatis相应的sql.xml文件配置

<!-- 初始化部门树 -->
<resultMap type="com.lilosoft.cospace.sys.bean.DeptTree" id="deptTree">
<result column="DEPT_ID" property="id" javaType="java.lang.String" />
<result column="DEPT_NAME" property="name" javaType="java.lang.String" />
<collection column="DEPT_ID" property="childrenList" ofType="DeptTree" javaType="java.util.ArrayList" select="selectDeptChildrenById"/>
</resultMap>
<!-- 根据parent_id,先查出所有一级部门 -->
<select id="queryDeptTreeList" resultMap="deptTree">
select dept_id,dept_name from sys_dept  where is_use='0' and parent_id= (select dept_id from sys_dept where parent_id='-1' and is_use='0')
</select>
<!-- 再递归查询出一级部门下的所有子部门 -->
<select id="selectDeptChildrenById" resultMap="deptTree" parameterType="string">
select dept_id,dept_name from sys_dept  where is_use='0' and parent_id= #{DEPT_ID}
</select>


第三步:(dao和service层代码略)控制器调用

List<DeptTree> dList=deptService.queryDeptTreeList();

阅读全文
0 0
原创粉丝点击