Mybatis之Collectin标签多层嵌套使用

一、前言

关于该篇文章,主要是通过例子展示,当编写mybatis的xml文件中,出现需要使用嵌套Collection标签时候的有效写法,以此分享给大家,同时也是作为自己在业务开发中问题解决的记录

二、原数据格式及目标数据格式映射

根据业务需求,我们的数据查询结果如下:

f_idparent_namechild_name其他字段
1xxxx_c_1        ...
1xxxx_c_2...
1testtest_c_1...
1testtest_c_2...
1ptpt_c_1...
1hhnull...

我们希望将查询结果映射出来的对象格式(通过json体现会比较形象)如下:

 {
   "id": 1,
    "names": [
      {
        "parentName": "xx",
        "childNames": ["xx_c_1", "xx_c_2"]
      },
      {
        "parentName": "test",
        "childNames": ["test_c_1", "test_c_2"]
      },
      {
        "parentName": "pt",
        "childNames": ["pt_c_1"]
      },
      {
        "parentName": "hh",
        "childNames": []
      }
    ]
}

接下来我们需要设计类

三、类创建

@Data
pulbic class ResultPO{
    
    private Integer fId;

    private List<NamePO> Names;
        
}
@Data
public class NamePO{

    private String parentName;

    private List<String> childNames;

}

接下来就是xml中的resultMap写法了

四、mybatis之resultMap设计

<resultMap id="myResultMap" type="xxx.ResultPO">
		<id column="f_id" jdbcType="NUMBER" property="fId" />
		<collection property="names" resultMap="nameMap"/>
</resultMap>

<resultMap id="nameMap" type="xxx.NamePO">
		<result column="parent_name" jdbcType="VARCHAR" property="parentMame"/>
		<collection property="childNames" resultMap="childNameMap"/>
</resultMap>

<resultMap id="childNameMap" type="string">
		<result column="child_name" jdbcType="VARCHAR"/>
</resultMap>

最后,我们直接使用myResultMap作为结果返回映射即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值