Mybatis入门(六)联查之一对多
上一章说了多对一,很多学生被一个老师教,这一章是一个老师教很多学生
目录基本没有变化只是改了配置文件:

2、配置文件:
TeacherMapper接口类:
package com.hdlf.dao; import com.hdlf.pojo.student;
import com.hdlf.pojo.teacher; import java.util.List; public interface TeacherMapper {
//方式一
teacher getteacher(int tid);
//方式二
teacher getteacher2(int tid); }
teacher实体类:
package com.hdlf.pojo;
import lombok.Data;
import java.util.List;
public class teacher {
private int tid;
private String tname;
//因为需要获取到学生所以在这里加一个List泛型集合
List<student> students;
public List<student> getStudents() {
return students;
}
public void setStudents(List<student> students) {
this.students = students;
}
public teacher() {
}
public teacher(int tid, String tname, List<student> students) {
this.tid = tid;
this.tname = tname;
this.students = students;
}
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
@Override
public String toString() {
return "teacher{" +
"tid=" + tid +
", tname='" + tname + '\'' +
", students=" + students +
'}';
}
}
student实体类因为是根据老师查教过多少学生,学生类不用写特别的类:
package com.hdlf.pojo;
public class student {
private int sid;
private String sname;
private int tid;
@Override
public String toString() {
return "student{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", tid=" + tid +
'}';
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getTid() {
return tid;
}
public void setTid(int tid) {
this.tid = tid;
}
public student(int sid, String sname, int tid) {
this.sid = sid;
this.sname = sname;
this.tid = tid;
}
public student() {
}
}
TeacherMapper.xml配置类:
这个是方式一:
复杂的属性,需要单独处理 对象使用:association
集合使用:collection
javaType 指定属性类型,集合中泛型信息使用ofType获取
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hdlf.dao.TeacherMapper"> <select id="getteacher" resultMap="getstudent">
select t.tid, t.tname ,s.sname,s.sid from student s,teacher t where s.tid = t.tid and t.tid = #{tid};
</select> <resultMap id="getstudent" type="teacher">
<result property="tid" column="tid"></result>
<result property="tname" column="tname"></result> <!--复杂的属性,需要单独处理 对象:association 集合:collection
javaType 指定属性类型
集合中泛型信息使用ofType获取
这个studens就是teacher实体类中的students-->
<collection property="students" ofType="student">
<result property="sid" column="sid"></result>
<result property="sname" column="sname"></result>
</collection> </resultMap>
</mapper>
测试结果:
teacher{tid=0, tname='王老师', students=[student{sid=1, sname='张三', tid=1}, student{sid=2, sname='李四', tid=1}, student{sid=3, sname='王五', tid=1}, student{sid=4, sname='吴六', tid=1}, student{sid=5, sname='赵七', tid=1}]}
方式二个人理解其实都一样:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hdlf.dao.TeacherMapper">
<select id="getteacher2" resultMap="getallteacher">
select * from mybatis.teacher where tid = #{tid}
</select>
<resultMap id="getallteacher" type="teacher">
<collection property="students" select="getallstudent" javaType="ArrayList" ofType="studnet" column="tid"></collection>
</resultMap>
<select id="getallstudent" resultType="student">
select * from mybatis.student;
</select> </mapper>
这个就是一对多的处理,小编还是没有领悟到其中的精髓,希望过几天可以顿悟。
Mybatis入门(六)联查之一对多的更多相关文章
- Mybatis入门(六)联查之多对一
Mysql可以联查,但Mybatis也可以联查只是没有MySQL联查的舒服需要配置很多文件. 开始搭建环境: MySQL新建两个表一个Student一个Teacher表: Teacher表: CREA ...
- <MyBatis>入门六 动态sql
package org.maple.mapper; import org.apache.ibatis.annotations.Param; import org.maple.pojo.Employee ...
- MyBatis入门(二)---一对一,一对多
一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybati ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
- MyBatis入门(五)---延时加载、缓存
一.创建数据库 1.1.建立数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.9-log : Database - mybatis ****** ...
- Mybatis(一) mybatis入门
学习了hibernate这个持久层框架之后,在来学习Mybatis简直是无压力,因为Mybatis入门门栏很低,如果学习过了hibernate的话,对于Mybatis的学习很简单了,如果没学习过hib ...
- Mybatis学习(一)—————mybatis入门
学习了hibernate这个持久层框架之后,在来学习Mybatis简直是无压力,因为Mybatis入门门栏很低,如果学习过了hibernate的话,对于Mybatis的学习很简单了,如果没学习过hib ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
随机推荐
- laravel 创建授权策略
用户只能编辑自己的资料 在完成对未登录用户的限制之后,接下来我们要限制的是已登录用户的操作,当 id 为 1 的用户去尝试更新 id 为 2 的用户信息时,我们应该返回一个 403 禁止访问的异常.在 ...
- 下载完idea后需要做的设置
1.设置字体 2.安装插件 3.设置文件头(C:\Users\用户名\.IntelliJIdea2019.2\config\fileTemplates\includes下有个文件叫做File Head ...
- 20141110的alltosun面试
今天周一,是校招的第一天,心情有点紧张,不过可以和很多同学一起去,是我紧张的心情变得稍微安静些.面试进行的时候,是学长2哥面的我,总体感觉自己的表现很糟糕,在公共场合发表言论或者演讲,一直是我的一个弱 ...
- 压力测试-apachebench
压力测试-apachebench 1. 压力测试 压力测试的概念\定义: 性能测试Performance Test :是指通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项 ...
- CSS水平垂直居中常见方法总结2
1.文本水平居中line-height,text-align:center(文字)元素水平居中 margin:0 auo 方案1:position 元素已知宽度 父元素设置为:position: re ...
- java课极限测试
在临近国庆的9月30号补课日 碰到了惨绝人寰的java课极限测试 我从下午两点半做到晚上九点 不得不说人在烦躁的时候是真的没办法写代码的 根本不想思考也不想学习.最后的几个小时基本就是在叹息和坐着.也 ...
- 遍历 Map 的方式
今天获取到一个Map 集合,想循环遍历出内容,突然发现忘记如何遍历Map,平时用的太少. Map 集合的内容是 Key , Value 键值对形式存储 第一种是 for 循环遍历 Map<Str ...
- Mac 系统上有趣的插件
1.微信小助手:https://github.com/TKkk-iOSer/WeChatPlugin-MacOS 作用:开启消息撤回拦截,设置自动回复,远程登录Mac,微信多开,免认证登录.... 2 ...
- Hibernate笔记二
1.延迟加载(懒加载) 概念 需要用到该数据的时候才要加载 种类 类的延迟加载 案例 说明:注意:使用的是Load方法 1. 执行22行代码的时候,不发出sql语句,说明类的延迟加载和主键没有关系 ...
- day5-1继承
继承: Constructor属性和prototype属性的关系: 创建了自定义的构造函数之后,其原型对象默认会取得constructor属性:当调用构造函数创建一个新实例后,该实例的内部将包含一个指 ...