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属性指定集合中元素的对象类型。


目录
相关文章
|
10月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
791 13
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
1338 9
|
11月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
596 1
|
XML Java 数据库连接
Mybatis一对一,一对多关联查询
## MyBatis一对一、一对多关联查询详解 MyBatis是一款优秀的持久层框架,提供了灵活的SQL映射功能,支持复杂的数据库操作。本文将详细介绍MyBatis中一对一和一对多关联查询的实现。 ### 一对一关联查询 一对一关联关系指的是一个表中的一条记录与另一个表中的一条记录相关联。例如,一个用户有一个地址信息。 #### 数据库表设计 假设有两个表:`user`和 `address`。 ``` CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE address
549 18
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
1849 6
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
575 2
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
XML Java 数据库连接
Mybatis实现RBAC权限模型查询
通过对RBAC权限模型的理解和MyBatis的灵活使用,我们可以高效地实现复杂的权限管理功能,为应用程序的安全性和可维护性提供有力支持。
472 5
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
519 3
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
816 1