您的位置:首页 > 其它

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

2017-10-11 11:21 423 查看
解决字段名重复导致的问题,简单直接的方法是设置别名,例如

<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。

问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐