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.数据



总结


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



相关文章
|
19天前
|
关系型数据库 Java 数据库
docker部署postgresql数据库和整合springboot连接数据源
docker部署postgresql数据库和整合springboot连接数据源
27 0
|
19天前
|
Java 测试技术 数据库
【SpringBoot】连接数据源并回显(附加单元测试)
【SpringBoot】连接数据源并回显(附加单元测试)
16 0
|
19天前
|
Java 关系型数据库 MySQL
基于SpringBoot后端实现连接MySQL数据库并存贮数据
基于SpringBoot后端实现连接MySQL数据库并存贮数据
|
19天前
|
NoSQL Java Redis
SpringBoot连接Redis出现io.lettuce.core.RedisCommandTimeoutException:Commandtimedout解决办法
SpringBoot连接Redis出现io.lettuce.core.RedisCommandTimeoutException:Commandtimedout解决办法
59 0
|
7月前
|
消息中间件 Java
springboot RabbitMQ 连接超时配置
springboot RabbitMQ 连接超时配置
272 0
|
19天前
|
Oracle Java 关系型数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
|
19天前
|
Java 关系型数据库 MySQL
docker 部署springboot项目,连接mysql容器
docker 部署springboot项目,连接mysql容器
147 0
|
19天前
|
NoSQL Java Redis
SpringBoot连接redis
SpringBoot连接redis
27 0
|
10月前
|
Java 数据库
SpringBoot项目连接数据库
SpringBoot项目连接数据库
111 0
|
7月前
|
NoSQL Java 测试技术
Springboot2.x集成lettuce连接redis集群报超时异常Command timed out after 6 second(s)
最近在对一新开发Springboot系统做压测,发现刚开始压测时,可以正常对redis集群进行数据存取,但是暂停几分钟后,接着继续用jmeter进行压测时,发现redis就开始突然疯狂爆出异常提示:Command timed out after 6 second(s)......
154 0