MyBatis多表关联查询字段名称冲突的解决办法

我们要对数据库中的两张表进行管理查询,但是不幸的是这两张表有相同的字段名,导致最后查询出来的结果里这两个字段的值是相同的!很显然某一个被另一个给覆盖了,而原因就是:多表关联查询时有相同的字段名,解决方案其实很简单,定义结果集和查询的时候都取一个别名就可以了!
实体类1:User.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String address;
    //一对多映射集合
    private List accounts;
}

实体类2:Account.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
    private Integer id;
    private Integer uid;
    private Double money;
}

UserMapper 接口:

public interface UserMapper {
    List findAllUser();
}

mapper.xml文件:下面写法是错误的,这样查出来的id只有一个


    
        
        
        
        
        
            
            
            
        
    
    
    

正确方法:要解决这个问题很简单,拿上面的例子来说,我们要给结果集userAccountMap的字段起个别名,然后在下面的select语句中查询时再给字段起个相同的别名:


    
         
        
        
        
        
             
            
            
        
    
    
    

这么做就可以解决问题了。

你可能感兴趣的:(mybatis,java,数据库)