解决MyBatis 多表联合查询,字段重复的问题
属性名表实体
@Data public class PmsBaseAttrInfo implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id @Column private String id; @Column private String attrName; @Column private String catalog3Id; @Column private String isEnabled; @Transient List<PmsBaseAttrValue> attrValueList; }
属性值表实体
@Data public class PmsBaseAttrValue implements Serializable { @Id @Column private String id; @Column private String valueName; @Column private String attrId; @Column private String isEnabled; @Transient private String urlParam; }
属性名表实体id与属性值表实体id字段一样,属性名表与属性值关系是一对多关联,如果在mybatis不使用别名的话,mybatis是识别不了的,查询出来的结果是混乱的
使用别名的查询如下 :
属性名表与属性值表的id字段相同,如果不用别名的话,查询的结果会出现意想不到的错误,因此,设置属性值表的id为attrValueId
同时也要更改column为别名字段,这样查询出来的结果还是和实体一致,不会变成attrValueId,这个只是给mybatis起识别作用
<id property="id" column="attrValueId" />
查询出来的结果符合预期,如下: