mybatis多表关联:自关联时,读到的parent的id和id是一相同的,诡异,请大牛帮忙看下

<resultMapid="DisplayResultMap"type="adpublish.models.AdCompany"><idcolumn="id"jdbcTy... <resultMap id="DisplayResultMap" type="adpublish.models.AdCompany">
<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>
展开
 我来答
bjiangzhou
2016-07-16 · TA获得超过105个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:111万
展开全部

建议你把你的查询语句先去试一下,看看查出来的都是些什么数据,字段值又是什么。

你看两处配置的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>

追问
  1. sql语句放到单独查询是没有问题的。


  2. 按照你说的方式修改了。但是查询出来的数据还是不对。


追答
怎么个不对?把你association里的resultMap去掉
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式