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日

相关文章

  • MyBatisPlus分页的同时指定排序规则说明

    在使用MyBatisPlus进行分页时,可以同时指定排序规则,以保证分页结果的正确性。下面详细讲解如何进行操作。 1.在Mapper接口中定义分页查询方法 首先在Mapper接口中定义分页查询方法,方法需要使用MyBatisPlus提供的IPage来进行分页操作,示例如下: public interface MyMapper extends BaseMapp…

    Java 2023年5月20日
    00
  • Java中instanceof关键字的用法总结

    下面是Java中instanceof关键字的用法总结。 Java中instanceof关键字的用法总结 1. 什么是instanceof? instanceof是Java中的一个二元运算符,用于判断一个对象是否为一个类的实例,或者是该类的子类或者接口的实例。它的语法如下: result = object instanceof Class 其中,object是…

    Java 2023年5月26日
    00
  • win2K下IIS5.0配置asp+cgi+php+mysql全攻略

    针对“win2K下IIS5.0配置asp+cgi+php+mysql全攻略”的完整攻略,我结合实际操作经验,详细阐述以下步骤和注意事项。 确认安装IIS5.0 首先,我们需要确定已经在win2K系统中安装了IIS5.0,具体步骤如下: 点击“开始”菜单,进入“设置”选项卡; 选择“控制面板”,然后点击“添加/删除程序”; 在列表中找到“添加/删除Window…

    Java 2023年5月20日
    00
  • Java日常练习题,每天进步一点点(49)

    首先,这是一篇关于Java练习题的攻略。根据题目名称“Java日常练习题, 每天进步一点点”,我们可以初步判断这篇攻略是针对Java初学者的日常练习计划。该练习计划涵盖了Java基础知识的各个方面,从变量类型到控制语句,再到面向对象编程和异常处理等。通过练习,初学者可以逐渐掌握Java的基本概念、语法和编程思想,不断提高自己的编程水平和解决问题的能力。 接下…

    Java 2023年5月23日
    00
  • 趣谈Unicode、Ascii、utf-8、GB2312、GBK等编码知识

    趣谈Unicode、ASCII、UTF-8、GB2312、GBK等编码知识 什么是编码? 计算机是一台二进制数处理机器,它无法直接处理人类可读的字符和文本。因此,需要通过一种规范来将字符和文本转化为计算机可识别的二进制数,这个规范就叫做编码。 ASCII编码 ASCII编码,全称是American Standard Code for Information …

    Java 2023年5月20日
    00
  • 通过实例解析Java class文件编译加载过程

    我来为您详细讲解一下“通过实例解析Java class文件编译加载过程”的完整攻略。 背景介绍 Java程序的执行离不开Java虚拟机(JVM),JVM就是一个执行Java字节码的虚拟计算机,而Java字节码是通过Java源文件编译而来的。Java编译器编译Java源文件时,会将源文件编译成Java字节码文件(.class),这个.class文件就是Java…

    Java 2023年5月20日
    00
  • 项目讲解之常见安全漏洞

    本文是从开源项目 RuoYi 的提交记录文字描述中根据关键字漏洞|安全|阻止筛选而来。旨在为大家介绍日常项目开发中需要注意的一些安全问题以及如何解决。 项目安全是每个开发人员都需要重点关注的问题。如果项目漏洞太多,很容易遭受黑客攻击与用户信息泄露的风险。本文将结合3个典型案例,解释常见的安全漏洞及修复方案,帮助大家在项目开发中进一步提高安全意识。 RuoYi…

    Java 2023年4月19日
    00
  • hadoop入门之通过java代码实现将本地文件上传到hadoop的文件系统

    下面是 “Hadoop入门之通过Java代码实现将本地文件上传到Hadoop的文件系统”的攻略。 步骤一:安装Hadoop 首先需要安装配置好Hadoop。具体安装过程这里不再赘述,可以参考官方文档:https://hadoop.apache.org/docs/r3.2.2/index.html 步骤二:引入Hadoop的依赖包 在java项目中使用Hado…

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