iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot进行多表查询功能的实现
  • 123
分享到

SpringBoot进行多表查询功能的实现

2024-04-02 19:04:59 123人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

实体类: Emp 类: @Data @NoArgsConstructor @AllArgsConstructor public class Emp { private i

实体类:

Emp 类:


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private int id;
    private String lastname;
    private String email;
    private int gender;
    private int did;
    private Dept dept;
    private Date birth = new Date();
}

Dept类:


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
    private int id;
    private String dname;
}

Mapper接口

EmpMapper:


//这个注解表示这是一个mybatis的mapper类
@Mapper
@Repository
public interface EmpMapper {
    void addEmp(Emp emp);
    void deleteEmp(int id);
    void updateEmp(Emp emp);
    Emp queryEmpById(int id);
    List<Emp> queryEmpList();
}

DeptMapper:


@Mapper
@Repository
public interface DeptMapper {
    List<Dept> queryDeptList(@Param("cid") int cid);
}

EmpMapper.xml 配置文件


<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" select="com.acoffee.mapper.DeptMapper.queryDeptList" column="did"></association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select * from emp_dept.employees
    </select>

</mapper>

DeptMapper.xml配置文件


<mapper namespace="com.acoffee.mapper.DeptMapper">

    <select id="queryDeptList" resultType="Dept">
        select * from emp_dept.department where id = #{id};
    </select>
    
</mapper>

前端页面(部分)


<tr th:each="emp:${emps}">
	  <td th:text="${emp.getId()}"></td>
	  <td th:text="${emp.getLastname()}"></td>
	  <td th:text="${emp.getEmail()}"></td>
	  <td th:text="${emp.getGender()==0?'女':'男'}"></td>
	  <td th:text="${emp.dept.getDname()}"></td>
	  <td th:text="${#dates.fORMat(emp.getBirth(),'yyyy-MM-dd HH:mm:ss')}"></td>
	  <td>
	      <a class="btn btn-sm btn-primary" th:href="@{/emp/{id}/(id=${emp.getId()})}" rel="external nofollow" >编辑</a>
	      <a class="btn btn-sm btn-danger" th:href="@{/delemp/{id}/(id=${emp.getId()})}" rel="external nofollow" >删除</a>
	  </td>
</tr>

查询结果:

在这里插入图片描述

上述我们采用的是分步查询。

我们下面使用association嵌套映射

其实这里查询会出现一个奇怪的事情,

在这里插入图片描述
在这里插入图片描述

因为我们现在两个表中都有id这个字段,所以我们在映射时使用<result property="id" column="id"></result>去查找部门的id时就发现查出来的是员工的id,就是因为员工的id与部门的id字段名重名了?

EmpMapper:


<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" javaType="com.acoffee.pojo.Dept">
            <result property="id" column="id"></result>
            <result property="dname" column="dname"></result>
        </association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.id
    </select>
</mapper>

上述执行结果如下

在这里插入图片描述

我们发现是员工id,我们现在将数据库中部门表的id改为pid

在这里插入图片描述

修改配置文件以及实体类


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
    private int pid;
    private String dname;
}

<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" javaType="com.acoffee.pojo.Dept">
            <result property="pid" column="pid"></result>
            <result property="dname" column="dname"></result>
        </association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.pid
    </select>

</mapper>

执行结果:

在这里插入图片描述

我们就发现查询的就是部门的id了

在这里插入图片描述

但是针对上面这个问题我们将部门的id字段名改为did (did在员工表中也存在) 此时我们再去查询又发现还是可以把部门id查询出来

在这里插入图片描述

这个问题就离谱,难道是因为id是主键,did不是主键的原因?就离谱

到此这篇关于SpringBoot进行多表查询的文章就介绍到这了,更多相关springBoot多表查询内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot进行多表查询功能的实现

本文链接: https://www.lsjlt.com/news/135676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot进行多表查询功能的实现
    实体类: Emp 类: @Data @NoArgsConstructor @AllArgsConstructor public class Emp { private i...
    99+
    2024-04-02
  • mybatis-plus多表关联查询功能的实现
    学习目标: mybatis-plus多表关联查询 学习内容: mybatis-plus多表关联查询 实体类部分代码 @Data @AllArgsConstructor @NoAr...
    99+
    2024-04-02
  • MySQL中怎么实现多表查询功能
    今天就跟大家聊聊有关MySQL中怎么实现多表查询功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、查看第一个表 mytable 的内容:   m...
    99+
    2024-04-02
  • MySQL进行多表查询的方法
    这篇文章主要介绍了MySQL进行多表查询的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。一、使用SELECT子句进行多表查询SELE...
    99+
    2024-04-02
  • navicat进行多表查询的方法
    小编给大家分享一下navicat进行多表查询的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!笛卡尔积多表查询,表名之间用逗号...
    99+
    2024-04-02
  • SpringBoot分页查询功能的实现方法
    目录前言:首先是手动实现分页查询:接下来是关联前端分页和后台数据:总结前言: 学习了SpringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现。现在我将具体的实现流...
    99+
    2024-04-02
  • java mybatis框架实现多表关系查询功能
    基于Maven框架的整体设计 —— 一多一的关系 思路:导入mybatis、mysql、Junit4.13依赖; 编写两个java实体类; 编写sqMapConfig.xml my...
    99+
    2024-04-02
  • 如何进行mysql多表查询
    这期内容当中小编将会给大家带来有关如何进行mysql多表查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、准备数据库init.sql文件内容如下:SET N...
    99+
    2024-04-02
  • MyBatis多表操作查询功能
    一对一查询 用户表和订单表的关系为,一个用户多个订单,一个订单只从属一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 在只查询order表的时候,也要查询u...
    99+
    2024-04-02
  • 利用 SpringBoot 在 ES 中实现类似连表查询功能
    目录一、摘要二、项目实践2.1添加依赖2.2配置 es 客户端2.3初始化索引结构2.4向 es 中同步文档数据2.5内嵌对象查询三、小结一、摘要 在上篇文章中,我们详细的介绍了如何...
    99+
    2024-04-02
  • SQL Server中怎么实现多表连接查询功能
    SQL Server中怎么实现多表连接查询功能 ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体代码如下所示:-- ...
    99+
    2024-04-02
  • mybatis通过中间表实现一对多查询功能
    需求: 通过一个学生的id查询出该学生所学的所有科目。 使用到的表格: 1.student:学生表 2.subject:科目表 3.stu_sub:学生-科目表(这里的成绩字段没...
    99+
    2024-04-02
  • 利用SpringBoot怎么实现一个多表联查功能
    这篇文章给大家介绍利用SpringBoot怎么实现一个多表联查功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:public interface FieldValueDao extends JpaRepo...
    99+
    2023-05-31
    springboot bo
  • 如何在springboot中使用mybatis-plus实现一个多表分页查询功能
    这篇文章将为大家详细讲解有关如何在springboot中使用mybatis-plus实现一个多表分页查询功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。新建一个springboot工程需要...
    99+
    2023-06-07
  • springboot整合mybatis实现简单的一对多级联查询功能
    本文的目的是用springboot整合mybatis实现一个简单的一对多查询。(查询一个用户有多少件衣服) 第一步:数据库中,可以直接在navicat中建立两张我们需要用到的表 ...
    99+
    2024-04-02
  • springboot整合mybatis实现多表查询的实战记录
    目录什么是mybatis1、一对一查询(例一个用户一个账户)1.1、实体类1.2、数据库表1.3、持久层接口2、一对多查询(例一个用户对应多个账户)2.1、实体类2.2、数据库表2....
    99+
    2024-04-02
  • Springboot+Mybatis实现分页加条件查询功能
    本文实例为大家分享了Springboot+Mybatis实现分页加条件查询的具体代码,供大家参考,具体内容如下 User.xml <xml version="1.0" enco...
    99+
    2024-04-02
  • thinkphp如何进行多表链接查询
    本篇内容主要讲解“thinkphp如何进行多表链接查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp如何进行多表链接查询”吧!首先,我们需要了解ThinkPHP中多表链接查询语句...
    99+
    2023-07-05
  • 实现mysql树查询的功能
    这篇文章给大家分享的是有关实现mysql树查询的功能的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。需求:查找当前(任意)级别下的所有子节点。通过自定义mysql函数实现,先贴代码...
    99+
    2024-04-02
  • Mongodb实现的关联表查询功能【population方法】
    本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下: Population MongoDB是非关联数据库。但是有时候我们还是想引用其它的文档。这就是population的用武之...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作