mybatis使用内部类处理一对多类型数据

mybatis使用内部类处理一对多类型数据

当一对多关系时,需要把多的那个数据传入到一个

例如: 需要获取用户id和模板id,一个租户id 可以创建多个模板,所以租户和模板是一对多的关系,为了减少创建实体类,使用内部类存储模板id和模板名称,然后存储到list集合中。

实体类

@Data
public class TenantAndTemplateId {
    private String tenantId;
    private String tenantName;
    private List<TemplateId> templateIds;
    
    //注意需要用static修饰
    @Data
    static class TemplateId {
        private String templateId;
        private String templateName;
    }
}

sql语句 租户表为主表,左连接模板表,此时会有查询到同一个租户有多个模板,我们将多的模板信息,封装到 List templateIds 这个集合中;

    select template_id,
       template_name,
       tenant.tenant_id,
       tenant_name
     from tenant
         left join template on tenant.tenant_id = template.tenant_id

使用mybatis 的xml 整理映射关系是,我们使用 collection 标签映射内部类 ,propertyd对应参数 templateIds,javaType 对应 templateIds参数的类型为list, 此处需要注意 ofType 对应的是TenantAndTemplateId 实体类的路径,后面使用$连接内部类名称即可实现内部类关系的映射

<resultMap id="tenantAndTemplateId" type="com.entity.TenantAndTemplateId">
    <result property="tenantId" column="tenant_id"/>
    <result property="tenantName" column="tenant_name"/>
    <collection property="templateIds" javaType="java.util.List" ofType="com.entity.TenantAndTemplateId$TemplateId">
        <result property="templateId" column="waf_template_id"/>
        <result property="templateName" column="waf_template_name"/>
    </collection>
</resultMap>

测试接口返回结果
在这里插入图片描述

注意点

01:resultType后面的内部类用$符号连接;
02:内部类必须有无参构造函数;
03:内部类必须为静态类有static修饰;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是杨杨呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值