当前位置: 首页 > news >正文

Mybatis多对多查询案例!

在MyBatis中执行多对多查询需要使用两个主要表和一个连接表(通常称为关联表)来演示。在这个示例中,我们将使用一个示例数据库模型,其中有三个表:`students`、`courses` 和 `student_courses`,它们之间建立了多对多关系。`students` 表存储学生信息,`courses` 表存储课程信息,`student_courses` 表用于将学生与他们所选的课程关联起来。

以下是如何在MyBatis中执行多对多查询的步骤:

1. 创建数据库表和数据。首先,确保你已经创建了适当的数据库表并插入了示例数据。以下是表的基本结构:

   - `students` 表包含 `student_id` 和 `student_name` 列。
   - `courses` 表包含 `course_id` 和 `course_name` 列。
   - `student_courses` 表用于将学生与课程关联,包含 `student_id` 和 `course_id` 列。

2. 创建 MyBatis 映射文件。你需要创建一个MyBatis映射文件来定义SQL查询。以下是一个示例映射文件的结构:

```xml

<mapper namespace="com.example.StudentCourseMapper"><select id="getStudentCourses" parameterType="int" resultMap="studentCourseResult">SELECT s.student_id, s.student_name, c.course_id, c.course_nameFROM students sJOIN student_courses sc ON s.student_id = sc.student_idJOIN courses c ON sc.course_id = c.course_idWHERE s.student_id = #{studentId}</select><resultMap id="studentCourseResult" type="com.example.StudentCourse"><result property="studentId" column="student_id"/><result property="studentName" column="student_name"/><result property="courseId" column="course_id"/><result property="courseName" column="course_name"/></resultMap>
</mapper>


```

3. 创建Java模型类。创建一个Java模型类来表示多对多关系的结果。例如,可以创建一个名为 `StudentCourse` 的类:

```java

public class StudentCourse {private int studentId;private String studentName;private int courseId;private String courseName;// 省略 getter 和 setter 方法
}


```

4. 创建Mapper接口。创建一个Mapper接口,定义用于执行多对多查询的方法:

```java

public interface StudentCourseMapper {List<StudentCourse> getStudentCourses(int studentId);
}


```

5. 配置MyBatis。在MyBatis的配置文件中配置数据源和映射文件。

6. 执行多对多查询。在应用程序中调用 `getStudentCourses` 方法,将学生的 `studentId` 作为参数传递:

```java

SqlSessionFactory sqlSessionFactory = MyBatisConfig.getSqlSessionFactory();
try (SqlSession session = sqlSessionFactory.openSession()) {StudentCourseMapper mapper = session.getMapper(StudentCourseMapper.class);List<StudentCourse> studentCourses = mapper.getStudentCourses(1); // 传入学生的IDfor (StudentCourse sc : studentCourses) {System.out.println("Student: " + sc.getStudentName() + ", Course: " + sc.getCourseName());}
}


```

这将执行查询,返回与给定学生相关的课程列表。

以上示例演示了如何在MyBatis中执行多对多查询。你可以根据自己的数据模型和需求进行相应的调整。

http://www.lryc.cn/news/138326.html

相关文章:

  • Android OpenCV(七十五): 看看刚”转正“的条形码识别
  • 数据结构——布隆计算器
  • 金融学复习博迪(第6-9章)
  • 解决idea登录github copilot报错问题
  • 什么是Flex布局?请列举一些Flex布局的常用属性。
  • React + TypeScript + antd 常见开发场景
  • 前端基础踩坑记录
  • k8s删除pod镜像没响应marking for deletion pod TaintManagerEviction
  • Nginx 使用 lua-nginx-module 来获取post请求中的request和response信息
  • 【Opencv】三维重建之cv::recoverPose()函数(1)
  • Perl兼容正则表达式函数-PHP8知识详解
  • Python处理空值NaN
  • 软件机器人助力交通运输局数据录入,实现高效管理
  • 时序分解 | MATLAB实现基于SGMD辛几何模态分解的信号分解分量可视化
  • FinalShell报错:Swap file “.docker-compose.yml.swp“ already exists
  • 卷积过程详细讲解
  • 代码随想录第五十六天
  • .NET 最便捷的Log4Net日志记录器
  • 深入探讨软件逆向工程:解密黑盒的奥秘
  • 利用tidevice+mysql+grafana实现ios性能测试
  • 内网安全:WMI协议与SMB协议横向移动
  • 05-Numpy基础-用于数组的文件输入输出
  • Docker微服务实战
  • NLNet论文总结和代码实现
  • 数字 IC 设计职位经典笔/面试题(三)
  • Matlab分割彩色图像
  • [数据集][目标检测]垃圾目标检测数据集VOC格式14963张44类别
  • MATLAB算法实战应用案例精讲-【深度学习】推荐系统模型DSSMDeepFM
  • 基于springboot的社区生活缴费系统/基于javaweb的水电缴费系统
  • Linux —— keepalived