Mybatis collection简单粗暴的一对多的层级列表

今天参考了一些案列,写了一个多级列表,一开始打算用循环递归的方式,但是后面看到mybatis的collection可以实现,我就尝试了一下

Mybatis中的SQL语句

<mapper namespace="com.example.list.demo.mapper.ListMapper">

    <resultMap id="MyListMap" type="com.example.list.demo.entity.RiskTable">
    <id property="code" column="code" jdbcType="VARCHAR"></id>
    <result property="riskName" column="risk_name" jdbcType="VARCHAR"></result>
    <result property="parentCode" column="parent_code" jdbcType="VARCHAR"></result>
        <collection property="children" column="{code=code}" select="getByOneParentNode" ofType="com.example.list.demo.entity.RiskTable">

        </collection>
    </resultMap>

    <!--通过controller传递parent code 获取子节点-->
    <select id="getByOneParentNode" resultMap="MyListMap">
    select
    *
    from risk_table t
    where t.parent_code = #{code}
    order by t.risk_name
    </select>

</mapper>

Controller

@RestController
public class ListController {

    @Autowired
    private ListService listService;

    //传递父节点code
    @GetMapping(value = "node/getNode")
    public Result getByOneParentNode(@RequestParam("parent_code") String parentcode){
        List<RiskTable> byOneParentNode = listService.getByOneParentNode(parentcode);
        return Result.success(byOneParentNode);
    }
}

用的springboot 2.x其他的mapper和service和日常一样

数据库有一点的是,头节点的parent不能等于自己的ID不然会产生死循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值