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日

相关文章

  • JSP入门教程(4)

    当然,我很高兴为您提供有关“JSP入门教程(4)”完整攻略的详细解释。 简介 在JSP入门教程的第四部分中,我们将学习如何使用JSP中的if-else语句和switch语句,这些语句用于控制流程和决策。 if-else语句 if-else语句是一种流程控制语句,可用于根据条件执行不同的代码块。在JSP页面中,可以使用以下语法来编写if-else语句: &lt…

    Java 2023年6月15日
    00
  • 深入了解Java Object类的使用

    深入了解Java Object类的使用 在Java中,所有类都继承自Object类,并且Object类提供了许多有用的方法,因此了解Object类的使用可以帮助我们更好地编写Java代码。本文将深入介绍Java Object类的使用方法,包括toString()、equals()、hashCode()和getClass()方法等。 toString()方法 …

    Java 2023年5月26日
    00
  • hibernate查询缓存详细分析

    Hibernate查询缓存详细分析 Hibernate是一个开源的持久性框架,支持使用注解、XML文件或者API访问数据库。Hibernate查询缓存可以显著提高应用程序的执行效率和性能。本文将分析Hibernate查询缓存并提供一些示例说明。 什么是Hibernate查询缓存 Hibernate查询缓存是指在缓存中缓存查询结果,避免重复执行相同的SQL语句…

    Java 2023年5月20日
    00
  • java使用JDBC动态创建数据表及SQL预处理的方法

    Java使用JDBC动态创建数据表及SQL预处理的方法 创建数据表 在JDBC中,创建数据表只需在Java中编写一个SQL CREATE TABLE语句并通过JDBC API执行该语句即可。示例代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQ…

    Java 2023年5月19日
    00
  • java排序去重示例分享

    请允许我详细讲解“java排序去重示例分享”的完整攻略。 1. 确定需求 首先,我们需要确定这个示例的需求:要对一个数组进行排序,并去重。 2. 准备数据 准备一个整型数组,作为示例代码的输入数据: int[] arr = {3, 8, 5, 2, 4, 3, 9, 1, 5, 4}; 3. 排序算法 用Java的Arrays类对数组进行排序,示例代码如下:…

    Java 2023年5月26日
    00
  • Java国际化简介_动力节点Java学院整理

    Java国际化简介 什么是Java国际化 Java国际化是指Java应用程序能够适应多种本地化语言和文化习惯的能力。对于包含不同语言或文化背景的用户,Java应用程序可以根据用户的语言环境改变显示的文本和消息。 Java国际化主要涉及以下三个方面: 文本显示问题。不同的语言使用不同的字符编码,如中文是utf-8,英文是ISO-8859-1。当不同语言的用户使…

    Java 2023年5月20日
    00
  • Spring Boot应用通过Docker发布部署的流程分析

    一、简介 Docker是一个著名的容器化技术,可以帮助开发团队把应用打包成一个独立的容器,使得团队之间的协作更加高效、部署更加方便。结合Spring Boot应用,可以通过Docker发布部署来实现Spring Boot应用的快速部署、快速扩展、资源隔离等现代化部署方式。 本篇攻略将详细讲解如何将Spring Boot应用通过Docker容器进行部署,并介绍…

    Java 2023年6月3日
    00
  • Spring boot配置绑定和配置属性校验的方式详解

    以下是关于“Spring boot配置绑定和配置属性校验的方式详解”的完整攻略,包含两个示例说明。 Spring boot配置绑定和配置属性校验的方式详解 背景 在开发 Spring Boot 应用时,我们经常需要配置一些参数,比如数据库连接信息、服务端口等等。而在应用部署时,这些参数也需要灵活地根据不同的环境进行配置,比如开发环境、测试环境、生产环境等等。…

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