之前做递归的时候写了那么多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"><collectionproperty="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, isParentfrom t_departmentwhere parentId = #{parentId}</select>
结果展示: