Java三表联查方法

ops/2024/9/24 5:35:22/

有些数据的查询需要我们查询三个表来获得总的数据。

一、准备工作:

我前面写过两表联查的方式,三表联查就是在两表联查的基础上进行的,下面是我写的两表联查博客

三表查询和两表查询的区别就只是在配置文件里的映射文件不一样,其余不管是调用方式还底层逻辑都是一样的。

 所以,我们就更改了三表联查的映射文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dao.oneselMapper">
<!-- 主表字段映射--><resultMap id="sanbiaoMapper" type="org.Emp.students"><id column="sno" property="sno"></id><result column="sname" property="sname"></result><result column="ssex" property="ssex"></result><result column="sbirthday" property="sbirthday"></result><result column="classZ" property="classZ"></result>
<!--副表字段映射--><collection property="scores" ofType="org.Emp.scores"><id column="sno" property="sno"></id><id column="cno" property="cno"></id><result column="degree" property="degree"></result><!--副表字段映射--><association property="courses" javaType="org.Emp.courses"><id column="cno" property="cno"></id><result column="cname" property="cname"></result><result column="tno" property="tno"></result></association></collection></resultMap><!--数据库的三表查询--><select id="sanbiaoall" resultMap="sanbiaoMapper">select students.*,courses.*,scores.*  from students,courses,scoreswhere courses.cno=scores.cno and scores.sno=students.sno</select></mapper>

只要对这个映射文件进行调用即可,写映射文件的接口

java">public interface oneselMapper {List<students> sanbiaoall();}

最后是在主方法里调用: 

java">package org.example;import org.Emp.order;
import org.Emp.students;
import org.Emp.user;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.PropertyConfigurator;
import org.dao.oneselMapper;import org.junit.jupiter.api.Test;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;public class testuser {private InputStream in;private SqlSessionFactory factory;private SqlSession session;@Testpublic void star1() throws IOException {//配置日志信息Properties properties = new Properties();FileInputStream fileInputStream = new FileInputStream("src/main/resources/config/log4j.properties");properties.load(fileInputStream);PropertyConfigurator.configure(properties);// 加载 MyBatis 配置文件//从类路径中获取 MyBatis 配置文件 mybatis-config.xml 的输入流。in = Resources.getResourceAsStream("config/mybatis-config.xml");//创建 SqlSessionFactory 对象,它是 MyBatis 的工厂类,用于创建 SqlSession。factory = new SqlSessionFactoryBuilder().build(in);//创建一个新的 SqlSession 实例,用于执行 SQL 语句。session = factory.openSession();//通过 SqlSession 获取 oneselMapper 接口的代理实现。oneselMapper mapper = session.getMapper(oneselMapper.class);//接口中定义了一个名为 sanbiaoall 的方法,该方法返回一个 List<students> 类型的列表。List<students> sanbiaoall = mapper.sanbiaoall();for (students a : sanbiaoall) {System.out.println(a);}}public static void main(String[] args) throws IOException {testuser testuser = new testuser();testuser.star1();}
}


http://www.ppmy.cn/ops/93383.html

相关文章

Zookeeper的监听机制

Zookeeper的监听机制是Zookeeper框架中一个至关重要的功能&#xff0c;它实现了分布式系统中数据状态变化的实时通知&#xff0c;使得客户端能够及时响应并处理这些变化。下面将详细解析Zookeeper的监听机制及其原理&#xff0c;包括监听器的注册、事件通知的处理、监听器的特点…

恶补费马小定理和组合数

前言&#xff1a;我们平时遇到的组合数如果用杨辉三角型做的话&#xff0c;预处理的复杂度是 n 2 n^2 n2 &#xff0c;遇到大一点的数据就会爆炸 我们怎么去优化呢 C ( n , k ) n ! k ! ⋅ ( n − k ) ! m o d mod C(n, k) \frac{n!}{k! \cdot (n-k)!} \mod \text{mod} C(…

Windows安装mmdet3d v0.17.1

背景 环境 windows 11家庭版&#xff0c; 64 位操作系统, 基于 x64 的处理器&#xff0c;显卡NVIDIA GeForce RTX 3060 需求 阅读一个3D目标检测源码&#xff0c;需要用到模块mmdetection3d v0.17.1&#xff0c;关于该模块的安装说明或教程几乎都是在Liunx环境下的&#x…

双胞胎命名有哪些特别之处?如何体现两者之间的联系与区别?

双胞胎命名艺术探秘 问题&#xff1a; 双胞胎命名有哪些特别之处&#xff1f;如何体现两者之间的联系与区别&#xff1f; 起尔网-免费取名|大师起名|宝宝起名|新生儿取名|男孩女孩在线起名姓名测试评分网起尔网-免费在线宝宝起名|新生儿取名|男孩女孩在线起名网&#xff0c;龙…

Java比较两个对象为什么要重写equals()和hashCode()

目录 1. 默认行为的局限性默认的 equals() 方法默认的 hashCode() 方法 2. 自定义逻辑相等性3. 集合操作的正确性和性能正确性性能 4. 遵循 Java 规范Kotlin 中的 data class 总结 在 Java 和 Kotlin 中&#xff0c;默认的 equals() 和 hashCode() 方法继承自 Object 类&#x…

C++11中的Lambda表达式

文章目录 C11中的Lambda表达式1.lambda表达式形式2.向lambda传递参数3.使用捕获列表4.lambda捕获和返回1.值捕获2.引用捕获3.隐式捕获4.可变lambda5.指定lambda的返回类型 C11中的Lambda表达式 1.lambda表达式形式 lambda表达式具有以下形式 [capture list] (parameter list)…

从零开始的CPP(36)——操作Excel

现有一个Excel A1.csv。 其表格第一列为&#xff1a;生物样本的名称&#xff1b;其他列为&#xff1a;生物样本的含量。表格第一行第一列是空格&#xff0c;第一行其他列为:受试者名称。 需求 如下&#xff1a;设计一个程序&#xff0c;可以指定受试者名称&#xff08;某列&…

千里江山图,自动化成诗:Expect脚本详解——从入门到进阶的自动化利器

目录 引言 Expect脚本基础 什么是Expect 基本语法 进阶应用 错误处理 正则表达式 并发处理 使用Shell脚本管理多个Expect脚本 在Expect脚本内部模拟并发 脚本复用与模块化 总结 引言 在自动化运维和测试领域&#xff0c;Expect脚本无疑是一把强大的利器。它以其灵…