myBatis学习笔记(4)——一对一关联表查询
来源:互联网 发布:mac keeper 破解版 编辑:程序博客网 时间:2024/06/05 19:21
需求
现有两个实体,student和teacher,假设一个学生对应一个老师,他们是一对一的关系,我们想要在查询学生的时候,也能得到该学生的老师的信息
准备
数据库两张表:student和teacher
实体类
package com.bank.entities;public class Teacher { private int teacherId; private String teacherName; public int getTeacherId() { return teacherId; } public void setTeacherId(int teacherId) { this.teacherId = teacherId; } public String getTeacherName() { return teacherName; } public void setTeacherName(String teacherName) { this.teacherName = teacherName; } @Override public String toString() { return "Teacher [teacherId=" + teacherId + ", teacherName=" + teacherName + "]"; }}
package com.bank.entities;public class Student { private int stuId; private String stuName; private Teacher teacher; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } @Override public String toString() { return "Student [stuId=" + stuId + ", stuName=" + stuName + ", teacher=" + teacher + "]"; }}
注意:在Student类中,有一个属性是Teacher,而不是teacherId
问题
很显然,我们需要关联student和teacher两张表,那么,多表查询的结果集,如何填充到student实体类中的同时,也把teacher属性中的属性对应填充好呢?
方案一
<!-- 方法一 --> <!-- 配置一个映射关系 --> <resultMap type="Student" id="studentResultMap1"> <id property="stuId" column="stu_id"/> <result property="stuName" column="stu_name"/> <!-- association是用来处理一对一关系的结果映射 --> <association property="teacher" javaType="Teacher"> <id property="teacherId" column="teacher_id"/> <result property="teacherName" column="teacher_name"/> </association> </resultMap> <!-- 查询结果集引用配好的映射关系 --> <select id="getStudent1" parameterType="int" resultMap="studentResultMap1"> select S.stu_id,S.stu_name,T.teacher_id,T.teacher_name from student S,teacher T where stu_id=#{id} and S.stu_id=T.teacher_id </select>
这种方法是直接关联两张表,执行一次查询
方案二
<!-- 方法二 :执行两次查询 --> <select id="getStudent2" parameterType="int" resultMap="studentResultMap2"> select * from student where stu_id=#{id} </select> <select id="getTeacher" parameterType="int" resultType="Teacher"> select teacher_id teacherId,teacher_name teacherName from teacher where teacher_id=#{id} </select> <resultMap type="Student" id="studentResultMap2"> <id property="stuId" column="stu_id"/> <result property="stuName" column="stu_name"/> <!-- 使用查询出来的teacher_id字段的值,作为参数调用 getTeacher这个查询--> <association property="teacher" column="teacher_id" select="getTeacher"> </association> </resultMap>
这种方法执行了两次查询:先查询学生信息,然后再用查询出来的teacherId去做第二次查询
两种方案得到的结果是一致的
1 0
- myBatis学习笔记(4)——一对一关联表查询
- mybatis学习笔记(九)一对一关联表查询
- MyBatis学习笔记:一对一和一对多关联表查询
- MyBatis 学习总结(五)—— 一对一关联表查询
- Mybatis学习笔记-一对一关联
- Mybatis---一对一关联表查询
- MyBatis一对一关联表查询
- Mybatis实现关联表查询(一对一关联)
- Mybatis学习总结之一对一关联表查询
- MyBatis学习--关联表查询--一对一一对多
- MyBatis关联查询(一对一)
- mybatis一对一关联查询
- Mybatis一对一关联查询
- Mybatis一对一关联查询
- Mybatis一对一关联查询
- MyBatis学习笔记五——实现关联表查询
- mybatis学习笔记(四) --- 一对一关联
- MyBatis-一对一关联表查询 -05
- iOS 7、iOS 8屏幕适配
- Nodejs学习路线图
- WebSphere Message Broker 介绍
- ThreadPoolExecutor 线程池 介绍
- 欢迎使用CSDN-markdown编辑器
- myBatis学习笔记(4)——一对一关联表查询
- 【WEB前端】eCharts 使用笔记
- ActionBar(3)起用各样式(基本,分离,tab,下拉列表)
- HDU_5224 Tom and paper
- 安卓实习期间整理知识点(十四)
- 使用py2exe生成独立的exe文件
- Eclipse 中Alt+/快捷键失效的解决办法
- OC基础
- cef3 process mouse key event