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

来源:互联网 发布:剑网三重制版 知乎 编辑:程序博客网 时间:2024/06/06 20:02

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

        <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。
问题解决。

阅读全文
0 0
原创粉丝点击