首页 > 代码库 > Mybatis学习笔记-一对一关联
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学习笔记-一对一关联
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。