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, ...
随机推荐
- 用python来更改windows开机密码
今天教大家用python脚本来控制小伙伴们windows电脑的开机密码.没错就是神不知鬼不觉,用random()随机生成的密码,只有你自己知道哦~ 代码呢分两部分,一部分是client端跟server ...
- Mysql 8.0 新特性测试
Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...
- base64,base32bit加密解密
import base64 str='admin' str=str.encode('utf-8') #加密 bs64=base64.b64encode(str) #解密 debs64=base64.b ...
- Linux下安装 boost 库
1. 先去官网下载压缩包: https://www.boost.org/ 2. 解压 tar -zvxf boost_1_70_0.tar.gz 2. cd 进入根目录,然后执行: ./bootstr ...
- 助力企业战疫提效保质,腾讯wetest远程办公工具包请查收!
导语 疫情当前,减少个人的出行与聚集成为了抗击疫情的重要防线.不少企业为了员工的安全与战疫的目标,开始实行在家远程办公的措施.作为开发测试人员,对工作环境与设备软件的条件要求相对较高,当前在远程办公的 ...
- Community Cloud零基础学习(一)启用以及简单配置
本篇参考: https://trailhead.salesforce.com/en/content/learn/trails/communities https://trailhead.salesfo ...
- golang数据库操作初体验
在golang中,提供了标准的数据库接口database/sql包,做过数据库开发的应该知道,不同的数据库有不同的数据库驱动.比如mysql等,我们可以去找 https://golang.org/s/ ...
- BlockingQueue的几个实现分析
ArrayBlockingQueue 底层以数组的结构存放队列元素,容量大小不可改变. 先看下变量: items:数组,用于存放队列中的元素 takeIndex:获取元素的索引位置 putIndex: ...
- 2.9 logistic回归中的梯度下降法(非常重要,一定要重点理解)
怎么样计算偏导数来实现logistic回归的梯度下降法 它的核心关键点是其中的几个重要公式用来实现logistic回归的梯度下降法 接下来开始学习logistic回归的梯度下降法 logistic回归 ...
- Servlet 学习(五)
重定向redirect 1.使用方法 response.sendRedirect("/应用名/ 访问资源名"); response.sendRedirect(request.get ...