当一对多关系时,需要把多的那个数据传入到一个
例如: 需要获取用户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 实体类的路径,后面使用$连接内部类名称即可实现内部类关系的映射
测试接口返回结果
注意点01:resultType后面的内部类用$符号连接;02:内部类必须有无参构造函数;03:内部类必须为静态类有static修饰;