一、用到的数据库
- student表
tid为外键关联teacher表的主键id - teacher表
二、多对一查询
-
对于学生而言,多个学生属于一个老师,为多对一关系
因此在student实体类需要声明teacher对象
-
按结果进行嵌套查询
<select id="getStudent" resultMap="StudentTeacher">
SELECT s.id sid,s.name sname,s.gender sgender,s.birthday sbirthday,t.name tname FROM student s,teacher t WHERE s.tid=t.id
</select>
<resultMap id="StudentTeacher" type="com.yyx.pojo.Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="gender" column="sgender"/>
<result property="birthday" column="sbirthday"/>
<association property="teacher" javaType="com.yyx.pojo.Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
三、一对多查询
- 对于老师而言一个老师拥有多名学生,为一对多关系
因此在teacher实体类中声明students集合
- 按结果进行嵌套查询
<select id="getTeacher" resultMap="TeacherStudent">
SELECT s.id sid,s.name sname,s.gender sgender,s.birthday sbirthday,t.name tname FROM student s,teacher t WHERE s.tid=t.id and t.id=#{tid}
</select>
<resultMap id="TeacherStudent" type="com.yyx.pojo.Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
<collection property="students" ofType="com.yyx.pojo.Student" >
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="gender" column="sgender"/>
<result property="birthday" column="sbirthday"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
四、项目源码
总结
- 关联—association—多对一
- 集合—collection—一对多
- JavaType用来指定实体类中属性的类型
- ofType用来指定映射到list或集合中的实体类对象,泛型中的约束类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/5028.html