栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis学习(三)—— 多对一 和 一对多

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis学习(三)—— 多对一 和 一对多

文章目录
  • 介绍
  • 多对一
    • 环境搭建
    • 按查询嵌套处理
    • 按照结果嵌套处理
  • 一对多
    • 实体类
    • 按照结果嵌套处理
  • 小结

介绍

其实这个好理解
就拿学生和班主任的关系来说,一个教室的学生有很多个,对应的班主任就一个。
学生对应班主任,就是多对一的关系
班主任对应学生,就是一对多的关系

下面我们在程序中实现联表查询

多对一 环境搭建

首先要在数据库中建立两个有关联的表


学生表里的tid就是老师的id

工程建立顺序如下:

  1. 导入Lombok
  2. 新建实体类Teacher,Student,使用Lombok注解
  3. 建立Mapper接口
  4. 建立Mapper.XML文件
  5. 在核心配置文件中绑定注册我们的Mapper接口或者文件!
  6. 测试查询是否能够成功!
按查询嵌套处理
    
        
        select * from student
    

    
        
        
        
        
        
    

    
        select s.id sid,s.name sname,t.name tname
        from student s, teacher t
        where s.tid = t.id;
    

    
        
        
        
            
        
    
一对多 实体类
@Data
public class Student {
    private int id;
    private String name;
    private int tid;
}
@Data
public class Teacher {
    private int id;
    private String name;

    //一个老师拥有多个学生
    private List students;
}

按照结果嵌套处理

        select s.id sid, s.name sname, t.name tname,t.id tid
        from teacher t, student s
        where t.id = s.tid and t.id = #{tid}
    

    
        
        
        
        
            
            
            
        
    
    
        select * from  mybatis.student where tid = #{tid}
    

小结

更加推荐使用第一种查询方式,也就是按照结果嵌套处理。

关联-association【多对一】
集合-collection【一对多】

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

注意点:

  • 保证SQL的可读性,尽量保证通俗易懂
  • 注意一对多和多对一中,属性名和字段的问题!
  • 如果问题不好排查错误,可以使用日志,建议使用Log4j

面试高频

  • Mysql引擎
  • InnoDB底层原理
  • 索引
  • 索引优化
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号