千家信息网

Mybatis一对多和多对一处理的区别是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,今天就跟大家聊聊有关Mybatis一对多和多对一处理的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。建表SQL:create tab
千家信息网最后更新 2025年02月01日Mybatis一对多和多对一处理的区别是什么

今天就跟大家聊聊有关Mybatis一对多和多对一处理的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

建表

SQL:

create table teacher(    id int not null,    name varchar(30) default null,    primary key (id));insert into teacher (id, name) values (1, '蔡老师');create table student(    id int not null ,    name varchar(30) default null,    tid int default null,    constraint fk_tid foreign key (tid) references teacher(id));insert 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);

多对一处理

  • 多个学生对应一个老师

  • 对于学生这边而言,关联。即多个学生关联一个老师【多对一】

  • 对于老师这边而言,集合。即一个老师有很多的学生【一对多】

mapper

//查询所有的学生信息以及对应的老师的信息List queryStudentAndTeacher();

实体类

@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {    private int id;    private String name;    //学生需要关联一个老师    private Teacher teacher;}
@Data@AllArgsConstructor@NoArgsConstructorpublic class Teacher {    private int id;    private String name;}

按照查询嵌套处理

                

按照结果嵌套处理

                        

回顾Mysql多对一查询方式

  • 子查询

  • 联表查询

一对多处理

  • 一个老师有多个学生

  • 对于老师这边而言,集合。即一个老师有很多的学生【一对多】

mapper

//查询指定老师的信息及其所有的学生Teacher queryTeaAndStu(@Param("tid") int id);

实体类

@Data@AllArgsConstructor@NoArgsConstructorpublic class Teacher {    private int id;    private String name;    //一个老师拥有多个学生    private List students;}
@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {    private int id;    private String name;    private int tid;}

按照查询嵌套处理

                                        

按照查询嵌套处理

    

结果映射

小结

  1. 关联 - association 【多对一】

  2. 集合 - collection 【一对多】

  3. javaType & ofType

    1. javaType 用来指定实体类中属性的类型

    2. ofType 用来指定映射到List或者集合中的entity类型,泛型中的约束类型

注意点:

  • 保证SQL的可读性,尽量保证通俗易懂

  • 注意一对多和多对一中属性名和字段的问题

  • 如果问题不好排查错误,可以使用LOG4J日志

看完上述内容,你们对Mybatis一对多和多对一处理的区别是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0