前言
本文主要讲解如何使用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>
mapper和mapper.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.数据
总结
容易出现纰漏的地方是实体类要加上内容连接的数据名,要不然调不出来数据。