解决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" />

 

查询出来的结果符合预期,如下:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM