springboot整合mybatis实现多表查询的实战记录

下面就是“springboot整合mybatis实现多表查询的实战记录”的完整攻略。

一、准备工作

1.1 创建一个SpringBoot项目

在IDE中创建一个SpringBoot项目,选择Web、MyBatis、MySQL等依赖。

1.2 导入需要的依赖

pom.xml文件中导入以下依赖:

<!-- MyBatis依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- MySQL依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

1.3 创建数据库和表

在MySQL中创建数据库和两个表,分别为orderuser。表之间的关系是一个用户可以拥有多个订单。下面是表结构和例子数据:

user表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `user` (id, name) VALUES (1, '张三');
INSERT INTO `user` (id, name) VALUES (2, '李四');

order表

CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `order` (id, user_id, name) VALUES (1, 1, '订单1');
INSERT INTO `order` (id, user_id, name) VALUES (2, 1, '订单2');
INSERT INTO `order` (id, user_id, name) VALUES (3, 2, '订单3');

二、实现多表查询

2.1 创建实体类

在项目中创建UserOrder两个实体类,分别对应上面创建的两个表。

User.java

public class User {
    private int id;
    private String name;

    // Getters and setters
}

Order.java

public class Order {
    private int id;
    private int userId;
    private String name;

    // Getters and setters
}

2.2 创建Mapper

src/main/java目录下创建一个mapper包,然后创建UserMapperOrderMapper两个Mapper接口。

UserMapper.java

public interface UserMapper {
    List<User> findAll();
}

OrderMapper.java

public interface OrderMapper {
    List<Order> findByUserId(int userId);
}

2.3 创建Mapper.xml

src/main/resources目录下创建mapper目录,然后在其中创建UserMapper.xmlOrderMapper.xml两个Mapper配置文件。

UserMapper.xml

<mapper namespace="com.example.demo.mapper.UserMapper">
    <resultMap id="UserResultMap" type="com.example.demo.entity.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
    </resultMap>

    <select id="findAll" resultMap="UserResultMap">
        SELECT *
        FROM user
    </select>
</mapper>

OrderMapper.xml

<mapper namespace="com.example.demo.mapper.OrderMapper">
    <resultMap id="OrderResultMap" type="com.example.demo.entity.Order">
        <id property="id" column="id"/>
        <result property="userId" column="user_id"/>
        <result property="name" column="name"/>
    </resultMap>

    <select id="findByUserId" resultMap="OrderResultMap">
        SELECT *
        FROM `order`
        WHERE user_id = #{userId}
    </select>
</mapper>

2.4 实现多表查询

src/main/java目录下创建controller包,然后在其中创建UserControllerOrderController两个Controller类。

UserController.java

@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/users")
    public List<User> getUsers() {
        return userMapper.findAll();
    }
}

OrderController.java

@RestController
public class OrderController {
    @Autowired
    private OrderMapper orderMapper;

    @GetMapping("/users/{userId}/orders")
    public List<Order> getOrdersByUserId(@PathVariable int userId) {
        return orderMapper.findByUserId(userId);
    }
}

2.5 测试多表查询

运行项目,然后在浏览器中访问http://localhost:8080/users接口,可以得到以下结果:

[
    {
        "id": 1,
        "name": "张三"
    },
    {
        "id": 2,
        "name": "李四"
    }
]

然后再访问http://localhost:8080/users/1/orders接口,可以得到以下结果:

[
    {
        "id": 1,
        "userId": 1,
        "name": "订单1"
    },
    {
        "id": 2,
        "userId": 1,
        "name": "订单2"
    }
]

这就是实现多表查询的完整攻略啦!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot整合mybatis实现多表查询的实战记录 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring Boot如何实现定时任务的动态增删启停详解

    下面我会详细讲解“Spring Boot如何实现定时任务的动态增删启停详解”的完整攻略。 什么是定时任务? 定时任务(Scheduled Task)是指在指定的时间点或时间间隔内自动执行某个操作的任务。在很多场景下,我们经常需要定时执行某些操作,例如定时清理临时数据、定时发送邮件等。 Spring Boot如何实现定时任务 Spring Boot 提供了标准…

    Java 2023年5月19日
    00
  • Java Lambda表达式详解

    Java Lambda表达式详解 什么是Lambda表达式? Lambda表达式是JDK8引入的一种新的语言特性,主要用于简化Java中的匿名内部类的使用。Lambda表达式本质上是一种匿名函数,实现了函数式编程的思想。 Lambda表达式的语法 Lambda表达式的基本语法如下: (parameters) -> expression 或 (param…

    Java 2023年5月20日
    00
  • Tomcat服务器安装配置教程(win7)

    Tomcat服务器安装配置教程(win7) 1. 下载Tomcat 首先,你需要从官网下载Tomcat服务器的安装包,你可以选择最新版本的Tomcat来下载。下载地址如下: https://tomcat.apache.org/download-80.cgi 下载后,你需要解压缩文件并将其放置在一个你所选定的目录下。 2. 配置Tomcat服务器 接下来,你需…

    Java 2023年5月19日
    00
  • 关于Spring框架中异常处理情况浅析

    关于Spring框架中异常处理情况浅析 异常处理概述 Spring框架在处理异常时,提供了非常灵活且丰富的机制。在Spring中,异常可以被拦截器、切面、异常解析器等进行处理。通过提供自定义的异常类或者异常处理器,我们可以控制异常在Spring中的流传和响应。 Spring异常处理机制 Spring异常处理流程 Spring中的异常处理流程一般为: 抛出异常…

    Java 2023年5月27日
    00
  • java json不生成null或者空字符串属性(详解)

    Java JSON不生成null或者空字符串属性(详解) 在开发过程中,我们经常需要将Java对象序列化成JSON格式,然而默认情况下,在Java对象中含有null或者空字符串的属性时,JSON序列化会将这些属性也序列化出来,这样可能会导致一些问题。此时,我们需要在生成JSON时控制输出项,使其不包含null或空字符串的属性。 生成JSON时控制输出项 我们…

    Java 2023年5月26日
    00
  • Java实现全排列的三种算法详解

    Java实现全排列的三种算法详解 什么是全排列 全排列是指从一组数中任意取出几个数(不重复,不遗漏)进行排列,把所有可能的排列情况列出来。 问题的解决方案 Java中有三种常见的方法来实现全排列: 递归实现 字典序排序法 基于交换的回溯法 接下来我们将详细地介绍这三种算法的实现过程。 递归实现 递归实现的思路是:将数组分成首元素和剩余元素两部分,分别对剩余元…

    Java 2023年5月18日
    00
  • 详解Spring Boot 使用Spring security 集成CAS

    下面是“详解Spring Boot 使用Spring security 集成CAS”的完整攻略。 1. 什么是CAS CAS(Central Authentication Service)是企业级的单点登录解决方案,可以为多个客户端提供统一的认证和授权管理服务。它使用了流行的Web认证的协议,如OAuth、OpenID等,同时可以整合LDAP等现有认证机制。…

    Java 2023年5月20日
    00
  • IDEA插件开发之环境搭建过程图文详解

    首先,要进行IDEA插件开发,需要搭建相应的开发环境。下面是我准备的完整攻略: 环境准备 Java环境 IDEA插件开发需要Java的支持,所以需要先安装Java环境。如果还没有安装,可以在Java官网上下载对应版本的Java开发包,并按照官方文档进行安装操作。 IntelliJ IDEA安装 下载并安装IntelliJ IDEA开发环境。建议下载最新版本。…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部