关于mybatis的resultMap中,column与数据库表匹配的有关问题

关于mybatis的resultMap中,column与数据库表匹配的问题
本帖最后由 u013589366 于 2015-06-20 21:12:20 编辑
如果有数据库有两张表:
teacher,包含id和name;
class,包含id和name。

有两个基本Java类
Teacher类,包含int id;String name;
Classes类,包含int id;String name; Teacher teacher;


<mapper namespace="me.gacl.mapping.classMapper">

    <select id="getClass" parameterType="int" resultMap="ClassResultMap">
        select * from class c, teacher t where c.id=#{id} and t.id=1
    </select>

    <resultMap type="me.gacl.domain.Classes" id="ClassResultMap">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="teacher" javaType="me.gacl.domain.Teacher">
            <id property="id" column="id"/>
            <result property="name" column="name"/>
        </association>
    </resultMap>
</mapper>


重新组织下语言:
为什么resultMap元素中,
 <id property="id" column="id"/>
 <result property="name" column="name"/>
当中的column表示的id和name,是属于classes表,而不是teacher表
------解决思路----------------------
你问题的实质是:
查询多表信息,但多表中有同名变量,该如何处理?
可以使用as

<mapper namespace="me.gacl.mapping.classMapper">

    <select id="getClass" parameterType="int" resultMap="ClassResultMap">
        select 
c.id as c_id,
c.name as c_name,
t.id as t_id,
t.name as t_name
 from class c, teacher t where c.id=#{id} and t.id=2
    </select>

    <resultMap type="me.gacl.domain.Classes" id="ClassResultMap">
        <id property="id" column="c_id"/>
        <result property="name" column="c_name"/>
        <association property="teacher" javaType="me.gacl.domain.Teacher">
            <id property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        </association>
    </resultMap>
</mapper>