Springboot 实现 INNER JOIN数据表内连接

简介: 本文主要讲解如何使用springboot实现内连接两张表的操作.

前言


本文主要讲解如何使用springboot实现内连接两张表的操作.



一、应用场景


想要在一个mapper.xml中调用两个表的部分数据,通过内连接(join on)的方式.


二、具体实现


1.新建数据表


代码如下(示例):


-- 创建 stype 表
CREATE TABLE stype (
  sid INT PRIMARY KEY,     -- 商品类型ID
  sname VARCHAR(255)      -- 商品类型名称
);
-- 创建 lost 表
CREATE TABLE lost (
  id INT PRIMARY KEY,       -- 失物ID
  uid INT,                  -- 用户ID
  lostType INT,             -- 所属商品类型ID
  lostName VARCHAR(255),    -- 失物名称
  losttime DATETIME,        -- 失物时间
  lostphone VARCHAR(20),    -- 联系电话
  detail TEXT,              -- 失物详情
  FOREIGN KEY (lostType) REFERENCES stype(sid) -- 外键关联到 stype 表的 sid 字段
);



在上述sql中,主要是通过lost表中的lostType和stype表中的sid来调用两个表数据.通过外键关联的方式


2.具体代码


实体类代码如下:


@Data
public class lost {
    private Integer id;
    private Integer uid;
    private Integer lostType;
    private String sname;
    private String lostName;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date losttime; // 使用java.util.Date类型
    private BigInteger lostphone;
    private String detail;
}


在上述代码中,我们定义了lost表中的数据以及通过外键内连接的sname的实体属性.@Data用到lombok插件,pom如下


<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>


mappermapper.xml如下


public List<lost> lostquery();


    <select id="lostquery" resultType="com.shop.demo.pojo.lost">
    SELECT lost.id, lost.uid, stype.sname, lost.lostName, lost.losttime, lost.lostphone, lost.detail
    FROM lost JOIN stype ON lost.lostType = stype.sid
</select>


在上述代码中,mapper接口的返回参数是list集合方式,而mapper.xml用到了内连接,通过判断lost表中的lostType和stype表中的sid是否一致调用想要的数据.

join on的语法格式如下


select 表1.数据名,表2.数据名 from 表1 join 表2(要调用的表) on 表1.数据名(内连接数据)=表2.数据



总结


容易出现纰漏的地方是实体类要加上内容连接的数据名,要不然调不出来数据。



相关文章
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
57 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
51 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
NoSQL Java Linux
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
该博客文章介绍了如何在Spring Boot项目中通过配置和代码实现连接运行在Linux虚拟机上的Redis服务,并提供了详细的步骤和测试结果截图。
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
|
4月前
|
Java Spring
spring boot 中默认最大线程连接数,线程池数配置查看
spring boot 中默认最大线程连接数,线程池数配置查看
307 4
|
消息中间件 Java
springboot RabbitMQ 连接超时配置
springboot RabbitMQ 连接超时配置
463 0
|
6月前
|
Oracle Java 关系型数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
|
6月前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
158 0
|
6月前
|
Java 测试技术 数据库
【SpringBoot】连接数据源并回显(附加单元测试)
【SpringBoot】连接数据源并回显(附加单元测试)
38 0
|
6月前
|
Java 关系型数据库 MySQL
基于SpringBoot后端实现连接MySQL数据库并存贮数据
基于SpringBoot后端实现连接MySQL数据库并存贮数据
|
6月前
|
NoSQL Java Redis
SpringBoot连接Redis出现io.lettuce.core.RedisCommandTimeoutException:Commandtimedout解决办法
SpringBoot连接Redis出现io.lettuce.core.RedisCommandTimeoutException:Commandtimedout解决办法
210 0