关于mybatis的resultMap中,column与数据库表匹配的有关问题
关于mybatis的resultMap中,column与数据库表匹配的问题
如果有数据库有两张表:
teacher,包含id和name;
class,包含id和name。
有两个基本Java类
Teacher类,包含int id;String name;
Classes类,包含int id;String name; Teacher teacher;
重新组织下语言:
为什么resultMap元素中,
<id property="id" column="id"/>
<result property="name" column="name"/>
当中的column表示的id和name,是属于classes表,而不是teacher表
------解决思路----------------------
你问题的实质是:
查询多表信息,但多表中有同名变量,该如何处理?
可以使用as
如果有数据库有两张表:
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>