mybatis处理一对一查询

 

有班级表,老师表,要求给定班级id查出班级信息和班级对应的老师信息

1、使用嵌套结果方式

sql语句:

<select id="findClasses" parameterType="int" resultMap="findClassesMap">
    select c.*,t.t_name from classes c,teacher t where c.t_id = t.t_id and c.c_id =#{id} ;
</select>
<resultMap type="Classes" id="findClassesMap">
    <id property="id" column="c_id"/>
    <result property="name" column="c_name"/>
    <association property="teacher" javaType="Teacher">
        <id property="id" column="t_id"/>
        <result property="name" column="t_name"/>
    </association>
</resultMap>

 

2、使用嵌套查询方式

select * from class where c_id = #{id}

select * from teacher where t_id = #{teacher_id} //使用上一个查询的结果teacher_id

 

<select id="findClasses2" parameterType="int" resultMap="findClasses2Map">
    select * from classes where c_id=#{id}
</select>
<resultMap type="Classes" id="findClasses2Map">
    <id property="id" column="c_id"/>
    <result property="name" column="c_name"/>
    <association property="teacher" select="findTeacher" column="t_id">
    </association>
</resultMap>
<select id="findTeacher" parameterType="int" resultType="Teacher">
    select t_id id,t_name name from teacher where t_id = #{t_id}
</select>

在association节点中配置两个属性column指上次查询结果哪个字段作为下一次查询的参数条件 select指对应的查询

 

posted on 2016-12-22 23:44  _故乡的原风景  阅读(135)  评论(0编辑  收藏  举报