最终解决Mybatis多表联合查询中字段名重复导致的各路问题

解决字段名重复导致的问题,简单直接的方法是设置别名,例如

        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <association property="post" column="postCode" javaType="com.test.post.model.Post" >
            <id property="id" column="postid"/>
            <result property="name" column="postname"/>
        </association>

然而随之楼主又出现了一个新的问题,例如此例中,当postCode为空时,postid和postname理所当然为空。这时,又出现了问题:post的id和name竟然被赋予了外围employee的id和name值。这显然不是我们想要的结果啊,怎么办呢:

<configuration>
    <settings>
        <setting name="callSettersOnNulls" value="true"/>
        <!--查询字段为空时依旧返回至对象-->
    </settings>
</configuration>

在mybatis的配置文件中加上这句代码后,post的id和name,被正常的赋予了null值,而不是错误的employee的值了。

然而还是不对啊,这里employee为空,查询返回的post应该是null才对,而不是返回一个属性都是空的post。

怎么解决呢,尝试一下另一种association的查询方式吧:

        <association property="post" column="postCode" select="com.test.post.dao.PostMapper.selectByPrimaryKey"/>

这里写图片描述

用分步查询的方式,果然没有嵌套查询所带来的问题了。返回了正常的null。
问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值