MyBatis实现关联表查询

简介: MyBatis实现关联表查询

1 问题描述

最近在对后台的学习又到了一个新的学习阶段,那就是学习如何使用MyBatis实现关联表查询。这是一个重要的应用,数据库设计后就必须要用到关联表查询。在学习之后也对关联表查询做了一些总结,现在就来分享一下我的总结。

2 问题分析

什么是关联表查询呢?将两个或两个以上的表按某个条件连接起来,从而选取需要的数据。多表联查是同时查询两个或两个以上的表时使用的。MyBatis实现关联表查询实现一对一、一对多以及多对多的操作其实就是对数据库进行操作,打到我们想要的数据关联。

3 解决方案

创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。  

   


         

创建classes实体类:

public class Classes {
   private Integer id;
   private String class_name;
   private Integer teacher_id;
   private Teachers teacher;
   public Integer getId() {
       return id;
   }

   public void setId(Integer id) {
       this.id = id;
   }

   public String getClass_name() {
       return class_name;
   }

   public void setClass_name(String class_name) {
       this.class_name = class_name;
   }

   public Teachers getTeacher() {
       return teacher;
   }

   public void setTeacher(Teachers teacher) {
       this.teacher = teacher;
   }

   public Integer getTeacher_id() {
       return teacher_id;
   }

   public void setTeacher_id(Integer teacher_id) {
       this.teacher_id = teacher_id;
   }
}

创建teacher实体类:

public class Teachers {
   private Integer id;
   private String teacher_name;
   public Integer getId() {
       return id;
   }

   public void setId(Integer id) {
       this.id = id;
   }

   public String getTeacher_name() {
       return teacher_name;
   }

   

public void setTeacher_name(String teacher_name) {
this.teacher_name = teacher_name;
   }
}

然后是简单的一个Mapper:



Mapper.xml



最后就是需要调用Mapper中的方法,这样就能实现一对一的联表查询。一对多的联表查询也是一样的,首先是创建数据库,然后是创建实体类,然后写Mapper接口,mapper.xml文件的写法如:



4 总结

本次联表查询我采用的是使用嵌套结果映射来处理重复的联合结果的子集,我认为这种方式更容易理解,当然也可以通过执行另外一个SQL映射语句来返回预期的复杂类型。MyBatis中使用association标签来解决一对一的关联查询,association标签可用的属性如下:

property:对象属性的名称

javaType:对象属性的类型

column:所对应的外键字段名称

select:使用另一个查询封装的结果

MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型。


目录
相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
135 8
|
1天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
7 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
7天前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
9 1
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
4月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
59 11
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
|
5月前
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
|
6月前
|
SQL Java 数据库连接
MyBatis 查询数据库
MyBatis 查询数据库