MyBatis递归查询层级关系的树

打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

之前做递归的时间写了那么多java代码发现根本不必要,直接sql就能搞定,直接上代码。
数据:根据parentId查出id,然后把id赋值给parentId,在查处本来parentId下面有哪些级别的数据。

实体类:这里关键是id,和父级parentId有关联关系。另外加一个children,list元素是本实体类。
  1. /**
  2. * 部门实体
  3. */
  4. public class Department implements Serializable {
  5.     private Integer id;
  6.     private String name;
  7.     private Integer parentId;
  8.     private String depPath;
  9.     private Boolean enabled;
  10.     private Boolean isParent;
  11.     private List<Department> children;// 子部门
  12. }
复制代码
dao层:这里传的是父级parentId
  1.     /**
  2.      * mapper接口
  3.      */
  4.     List<Department> getAllDepartments(Integer parentId);
复制代码
xml:
  1.     <!-- 通用查询映射结果 -->
  2.     <resultMap id="BaseResultMap" type="com.cdh.server.pojo.Department">
  3.         <id column="id" property="id"/>
  4.         <result column="name" property="name"/>
  5.         <result column="parentId" property="parentId"/>
  6.         <result column="depPath" property="depPath"/>
  7.         <result column="enabled" property="enabled"/>
  8.         <result column="isParent" property="isParent"/>
  9.     </resultMap>
  10.         <!-- 相当于id=-1 查询的结果id,再用这个id调用自己方法查询 -->
  11.     <resultMap id="DepartmentMap" type="com.cdh.server.pojo.Department" extends="BaseResultMap">
  12.         <collection
  13.                 property="children"
  14.                 ofType="com.cdh.server.pojo.Department"
  15.                 select="com.cdh.server.mapper.DepartmentMapper.getAllDepartments"
  16.                 column="id">
  17.         </collection>
  18.     </resultMap>
  19.     <!--查询所有部门-->
  20.     <select id="getAllDepartments" resultMap="DepartmentMap">
  21.     select id, name, parentId, depPath, enabled, isParent
  22.     from t_department
  23.     where parentId = #{parentId}
  24.     </select>
复制代码
结果展示:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表