mybatis多表关联:自关联时,读到的parent的id和id是一相同的,诡异,请大牛帮忙看下
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="id_parent" jdbcType="INTEGER" property="idParent" />
<result column="id_update_user" jdbcType="INTEGER" property="idUpdateUser" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="id_create_user" jdbcType="INTEGER" property="idCreateUser" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="remarks" jdbcType="VARCHAR" property="remarks" />
<association property="parent" column="id_parent" javaType="adpublish.models.AdCompany" resultMap="BaseResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
</association>
</resultMap>
<select id="selectCompaniesTreeById" statementType="CALLABLE" resultMap="DisplayResultMap" parameterType="java.lang.Integer">
select
*
from ad_company child, ad_company parent
where child.id_parent = parent.id and child.id = #{id}
</select> 展开
建议你把你的查询语句先去试一下,看看查出来的都是些什么数据,字段值又是什么。
你看两处配置的column的id和name都是一样的,就是说会将你查询出来的id和name字段的数据封装进去,你觉得是不是一样的呢。
你可以将 association里的column取个别名以区别其它的,但是你就需要查询这个别名的字段。property是和类的属性匹配的,column是和查询出来的字段匹配的。比如:
<resultMap ...>
<id property="id" column="id" />
<result property="name" column="name">
//column不能一样
<association peoperty="parent" ...... >
<id property="id" column="parent_id" />
<result property="name" column="parent_name">
</association>
</resultMap>
//查询语句
<select ... >
select child.*, parent.id as parent_id, parent.name as parent_name from ad_company child, ad_company parent where .........
</select>