标签:mybatis
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; //... }
第一种方式
<!-- 方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集 封装联表查询的数据(去除重复的数据) 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
标签:mybatis
原文地址:http://shamrock.blog.51cto.com/2079212/1559266