之前做递归的时候写了那么多java代码发现根本不需要,直接sql就能搞定,直接上代码。
数据:根据parentId查出id,然后把id赋值给parentId,在查处原本parentId下面有哪些级别的数据。
实体类:这里关键是id,和父级parentId有关联关系。另外加一个children,list元素是本实体类。
/**
* 部门实体
*/
public class Department implements Serializable {
private Integer id;
private String name;
private Integer parentId;
private String depPath;
private Boolean enabled;
private Boolean isParent;
private List<Department> children;// 子部门
}
dao层:这里传的是父级parentId
/**
* mapper接口
*/
List<Department> getAllDepartments(Integer parentId);
xml:
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.cdh.server.pojo.Department">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="parentId" property="parentId"/>
<result column="depPath" property="depPath"/>
<result column="enabled" property="enabled"/>
<result column="isParent" property="isParent"/>
</resultMap>
<!-- 相当于id=-1 查询的结果id,再用这个id调用自己方法查询 -->
<resultMap id="DepartmentMap" type="com.cdh.server.pojo.Department" extends="BaseResultMap">
<collection
property="children"
ofType="com.cdh.server.pojo.Department"
select="com.cdh.server.mapper.DepartmentMapper.getAllDepartments"
column="id">
</collection>
</resultMap>
<!--查询所有部门-->
<select id="getAllDepartments" resultMap="DepartmentMap">
select id, name, parentId, depPath, enabled, isParent
from t_department
where parentId = #{parentId}
</select>
结果展示: