Mybatis学习笔记-一对一关联

来源:互联网 发布:sql查询分析器下载 编辑:程序博客网 时间:2024/05/21 09:47

Teacher.java实体类 。 对应数据库teacher表

public class Teacher {private int id;private String name;//...}


Classes.java实体类 。 对应数据库class表

public class Classes {private int id;private String name;private Teacher teacher;//...}

wKiom1QovRrTaxgkAAA2O0uTmv4446.jpg

wKioL1QovUTw3I78AAAkbdjMeLE291.jpg

第一种方式

<!-- 方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集         封装联表查询的数据(去除重复的数据)select * from class c, teacher t where c.teacher_id=t.t_id and  c.c_id=1--><select id="getClass" parameterType="int" resultMap="ClassResultMap">select * from class c, teacher t where c.teacher_id=t.t_id and  c.c_id=#{id}</select><resultMap type="com.mybatis.test03.Classes" id="ClassResultMap"><id property="id" column="c_id"/><result property="name" column="c_name"/><association property="teacher" javaType="com.mybatis.test03.Teacher"><id property="id" column="t_id"/><result property="name" column="t_name"/></association></resultMap>


第二种方式

<!-- 方式二:嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型 SELECT * FROM class WHERE c_id=1; SELECT * FROM teacher WHERE t_id=1 //1 是上一个查询得到的teacher_id的值 --><select id="getClass2" parameterType="int" resultMap="ClassResultMap2">select * from class where c_id=#{id}</select><resultMap type="com.mybatis.test03.Classes" id="ClassResultMap2"><id property="id" column="c_id" /><result property="name" column="c_name" /><association property="teacher" column="teacher_id"select="getTeacher"><!-- 映射到后面的getTeacher --></association></resultMap><select id="getTeacher" parameterType="int" resultType="com.mybatis.test03.Teacher">SELECT t_id id, t_name name FROM teacher WHERE t_id=#{id}</select>


association 用于一对一的关联查询

property 对象属性的名称

javaType 对象属性的类型

column 所对应的外键字段的名称

select 使用另一个查询封装的结果


本文出自 “优赛工作室” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1559266

0 0