通过mybatis递归查询部门树Tree

通过mybatis递归查询部门树Tree

Association与Collection

Association元素处理“has-one”(一对一)这种类型关系。联合映射与其它的结果集映射工作方式差不多,如:一个 user 有 一个 role。 指定property、column、javaType(通常MyBatis会自动识别)、jdbcType(如果需要)、typeHandler。
collection表示“一对多“ 部门树是一个部门对应多个子部门。

区别

association和collection都是用来关联另一个表的数据,区别就是用来关联对象的封装的(一对一),而collection是用来关联集合封装的(一对多)。

Property:指定要关联的属性名
Select:设定要继续引用的查询,namespace+id
Column:查询时需要传递的列

举个例子,比如通过查询酒店,查出该酒店的城市,是一个城市对应一个酒店采用association。 而查询一个城市的酒店,是一对多的采用collection。

<!--注意:BaseResultMap 就是的entity对应关系这里的children 的ofType还是 Department实体 , column="id" 就是实体类的 id-->
          
 <resultMap id="DeptWithChildren" type="cn.com.model.Department"   extends="BaseResultMap">
     <collection property="children" ofType="cn.com.model.Department" column="id" select="cn.com.mapper.DepartmentMapper.getAllDeptsByPId" />
 </resultMap>
  
<!-- 查询pid 是controller传递的参数,返回 department 实体的集合-->

 <select id="getAllDeptsByPId" resultMap="DeptWithChildren">
    select  *  from department where pid=#{pid};
 </select>

这就是通过mybatis自己内部的递归循环查询,实现了mysql语句的递归循环。希望能帮到有需要的小伙伴。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柿子哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值