❤️Mybatis开发中什么是多对一处理、一对多处理?

什么是多对一:

  • 对于学生而言,关联…多个学生关联一个老师(多对一)
  • 对于老师而言,集合…一个老师有很多学生(一对多)

SQL:

CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO teacher(`id`, `name`) VALUES (1, '陈老师'); CREATE TABLE `student` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,`tid` INT(10) DEFAULT NULL,PRIMARY KEY (`id`),KEY `fktid` (`tid`),CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小红', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小张', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1');
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1');

测试环境搭建

1.导入lombok

2.新建实体类Teacher,Student

3.建立Mapper接口

4.建立Mapper.xml文件

5.在核心配置文件中绑定注册我们的Mapper接口或者文件!

5.测试查询是否能够成功

❤️一对多处理

如:一个老师有多个学生

对于老师而言,就是一对多的关系

环境搭建

实体类

Teacher

package com.kk.pojo;import lombok.Data;import java.util.List;@Data
public class Teacher {private int id;private String name;//一个老师拥有多个学生  集合private List<Student> students;
}

Student

package com.kk.pojo;import lombok.Data;@Data
public class Student {private int id;private String name;private int tid;
}

按照结果嵌套处理

<!--    按结果嵌套查询--><select id="getTeacher" resultMap="TeacherStudent">select s.id sid,s.name sname,t.name tname,t.id tidfrom student s,teacher twhere s.tid=t.id and t.id=#{tid}</select><resultMap id="TeacherStudent" type="Teacher"><result property="id" column="tid"/><result property="name" column="tname"/>
<!--        复杂的属性,我们需要单独处理  对象:association   集合:collection
javaType="" 这是一个指定属性的类型
集合中的泛型信息,我们使用ofType获取(如List<>  即为集合中的泛型)--><collection property="students" ofType="Student"><result property="id" column="sid"/><result property="name" column="sname"/><result property="tid" column="tid"/></collection></resultMap>

按照查询嵌套处理

<!--    子查询--><select id="getTeacher2" resultMap="TeacherStudent2">select * from mybatis.teacher where id=#{tid};</select>
<!--     id="TeacherStudent2"   由此关联--><resultMap id="TeacherStudent2" type="Teacher"><result property="id" column="tid"/><result property="name" column="tname"/><collection property="students"  javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id"/></resultMap><select id="getStudentByTeacherId" resultType="Student">select * from mybatis.student where tid=#{tid}</select>

1.关联-association 多对一

2.集合-collection 一对多

3.javaType & ofType

  1. javaType用来指定实体类中属性的类型
  2. ofType 用来执行映射到List或者集合中的pojo类型,泛型中的约束类型!

面试高频

  • Mysql引擎
  • InnoDB底层原理
  • 索引
    集合-collection 一对多

3.javaType & ofType

  1. javaType用来指定实体类中属性的类型
  2. ofType 用来执行映射到List或者集合中的pojo类型,泛型中的约束类型!

面试高频

  • Mysql引擎
  • InnoDB底层原理
  • 索引
  • 索引优化

❤️Mybatis开发中什么是多对一处理、一对多处理?相关推荐

  1. Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】

    在Mybatis开发中,使用到的是代理Dao的方式实现增删改查,这样就不需要在写Dao的实现类 但是Mybatis也支持写Dao实现类!即DaoImpl 直接上DaoImpl,之前的代码可以参考前面几 ...

  2. 提升开发效率的一款mybatis开发神器

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 本篇同步更新地址; https://me.csdn.net/Dan ...

  3. 后台SpringBoot + Mybatis开发遇到的一些坑

    目录 一.首先介绍一下开发框架,SpringBoot+Mybatis,SpringBoot集成了Tomcat因此,不需要下载Tomcat服务运行,开发完直接build出jar包运行即可,Mybatis ...

  4. 提升开发效率的一款 mybatis 开发神器

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

  5. 【MyBatis框架】高级映射-多对多查询

    多对多查询 1.需求 查询用户及用户购买商品信息. 2.sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetai ...

  6. 在Mybatis3开发中与配置相关的7点体会

    Mybatis3前身是Apche开源项目ibatis,后前移至google code改名为Mybatis,mybatis是Java持久化框架,关于Mybatis学习难度不大,熟悉JDBC编程的话,相信 ...

  7. javaweb开发中的那些坑

    最近电脑有点问题,没办法就重装系统了,花了一个晚上重装IDE.,配置环境,好不容易把eclipse的环境弄好,加载之前的项目时却又到各种问题,一怒之下,写一篇记录下在javaweb开发中遇到的各种坑 ...

  8. 个人在 laravel 开发中使用到的一些技巧(持续更新)

    1.更高效率地查询:使用批量查询代替 foreach 查询(多次 io 操作转换为一次 io操作) 如果想要查看更详尽的介绍,可以看看这篇文章 什么是 N+1 问题,以及如何解决 Laravel 的 ...

  9. 使Mybatis开发变得更加轻松的增强工具 — Ourbatis

    一.Mybatis的不足之处 Mybatis是一款优秀的及其灵活的持久层框架,通过XML配置并映射到Mapper接口为Service层提供基础数据操作入口. 这么优秀的框架竟然还有不足之处? 俗话说人 ...

最新文章

  1. 计算机显卡敀主要性能参数,显卡性能看什么参数(新手必备的显卡性能知识全解)...
  2. app网站换服务器,app切换服务器
  3. Python模拟ICMP包
  4. 基于Docker搭建私有镜像仓库
  5. 一个立即关闭显示器的小软件(Masm开发,只有3KB大小)
  6. Linux钩子拦截删除文件,在Linux中保存钩子文件
  7. drawable canvas使用
  8. HTTP状态:202、301、304、404、503
  9. mini2440驱动分析之ADC
  10. 二项式法在负荷计算机的应用,7.5二项式法确定计算负荷
  11. 学习: 导航器添加修饰符
  12. logistic回归详解(四):梯度下降训练逻辑回归python实现
  13. 人人都是 DBA(IX)服务器信息收集脚本汇编 (转)
  14. python抛出异常的关键字_浅谈python抛出异常、自定义异常, 传递异常
  15. 2013.6月安徽二级c语言考试试题答案豆丁网,安徽省c语言二级考试
  16. 目标检测应用竞赛 | 天池铝型材表面瑕疵(含数据集、详细解决方案)
  17. (可能是)最后一次参加同学婚礼了
  18. MQTT系列 | Retained消息和LWT和Keep Alive
  19. Designing Network Design Spaces,译读
  20. 中国医科大学22春《病理学(本科)》在线作业【标准答案】

热门文章

  1. django_4:数据库0——配置数据库
  2. Linux之进程通信20160720
  3. Linux字符设备驱动
  4. Zabbix监控Redis状态
  5. 【Oracle】使用logmnr工具挖掘日志
  6. Vue首页加载过慢 解决方案
  7. Windows 7上的Android Studio安装失败,未找到JDK
  8. 有没有更好的写v =(v == 0?1:0)的方法; [关闭]
  9. 如何解决“指定的服务已被标记为删除”错误
  10. 如何在Java中将字节数组转换为十六进制字符串?