MyBatis-Plus详解(环境搭建、关联操作)

yizhihongxing

MyBatis-Plus详解(环境搭建、关联操作)

环境搭建

添加依赖

pom.xml 文件中添加 MyBatis-Plus 的依赖。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

配置文件

application.yml 文件中添加 MyBatis-Plus 的配置。

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  typeAliasesPackage: com.example.entity

代码生成器

MyBatis-Plus 提供了一个自动生成代码的工具。在使用前,需要在 pom.xml 文件中添加代码生成器的依赖。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.2.0</version>
    <scope>test</scope>
</dependency>

application.yml 文件中,添加代码生成器的相关配置。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root

mp-generator:
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    driverName: com.mysql.jdbc.Driver
    username: root
    password: root
  package:
    parent: com.example
  strategy:
    naming: underline_to_camel
    table_prefix: sys_
    field_prefix: sys_

运行 MybatisPlusGeneratorApplication 类,即可自动生成代码。

关联操作

MyBatis-Plus 支持 SQL 关联操作,本文以一对多、多对多关联为例。

一对多关联

实体类定义:

@Data
public class User {
    private Long id;
    private String name;
    private String address;
    // 一对多关联
    @TableField(exist = false)
    private List<Order> orderList;
}

@Data
public class Order {
    private Long id;
    private Long userId;
    private BigDecimal price;
    private Integer status;
}

Mapper 文件:

<!-- 获取用户及其订单信息 -->
<select id="getUserWithOrders" resultMap="userResultMap">
    SELECT
        user.id, user.name, user.address,
        order.id AS order_id, order.user_id AS order_user_id, order.price, order.status
    FROM
        sys_user user
    LEFT JOIN sys_order order ON user.id = order.user_id
    <where>
        <if test="id != null">
            AND user.id = #{id}
        </if>
    </where>
    <!-- 根据用户id进行分组 -->
    <groupBy property="id"></groupBy>
</select>

<resultMap id="userResultMap" type="com.example.entity.User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="address" column="address"/>
    <!-- 一对多关系 -->
    <collection property="orderList" column="order_id" ofType="com.example.entity.Order">
        <id property="id" column="order_id"/>
        <result property="userId" column="order_user_id"/>
        <result property="price" column="price"/>
        <result property="status" column="status"/>
    </collection>
</resultMap>

调用关联查询:

User user = userMapper.getUserWithOrders(1L);

多对多关联

实体类定义:

@Data
public class User {
    private Long id;
    private String name;
    private String address;
    // 多对多关联
    @TableField(exist = false)
    private List<Role> roleList;
}

@Data
public class Role {
    private Long id;
    private String roleName;
}

@Data
public class UserRole {
    private Long id;
    private Long userId;
    private Long roleId;
}

Mapper 文件:

<!-- 获取用户及其角色信息 -->
<select id="getUserWithRoles" resultMap="userResultMap">
    SELECT
        user.id, user.name, user.address,
        role.id AS role_id, role.role_name
    FROM
        sys_user user
    LEFT JOIN sys_user_role user_role ON user.id = user_role.user_id
    LEFT JOIN sys_role role ON user_role.role_id = role.id
    <where>
        <if test="id != null">
            AND user.id = #{id}
        </if>
    </where>
    <!-- 根据用户id进行分组 -->
    <groupBy property="id"></groupBy>
</select>

<resultMap id="userResultMap" type="com.example.entity.User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="address" column="address"/>
    <!-- 多对多关系 -->
    <collection property="roleList" ofType="com.example.entity.Role">
        <id property="id" column="role_id"/>
        <result property="roleName" column="role_name"/>
    </collection>
</resultMap>

调用关联查询:

User user = userMapper.getUserWithRoles(1L);

以上是 MyBatis-Plus 的详细讲解,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus详解(环境搭建、关联操作) - Python技术站

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

相关文章

  • java遍历读取xml文件内容

    下面我将详细讲解Java遍历读取XML文件内容的完整攻略。 一、使用DOM方式读取XML文件 引入相关依赖:需要在项目中引入相关的dom4j和jaxen库。 创建SAXReader对象,利用SAXReader对象解析XML文件。 SAXReader reader = new SAXReader(); Document document = reader.re…

    Java 2023年5月19日
    00
  • Java Spring的两种事务你知道吗

    让我们来详细讲解一下“Java Spring的两种事务”。 什么是事务? 在计算机领域,事务是一组数据库操作,它们要么全部成功执行,要么全部失败回滚,不会出现部分操作成功、部分操作失败的情况。在Java编程中,我们可以使用Java Spring框架来管理事务。 Spring事务的两种类型 在Java Spring框架中,Spring事务主要包含两种类型:基于…

    Java 2023年6月2日
    00
  • 利用json2POJO with Lombok 插件自动生成java类的操作

    利用json2POJO with Lombok插件自动生成Java类是一个方便快捷的方式,特别是在进行大量API接口开发的时候。下面是使用该插件的完整攻略。 1. 下载插件 首先,需要在Intellij IDEA中安装json2POJO with Lombok插件。可以通过Intellij IDEA的插件市场来搜索和安装该插件。 2. 生成Java类 在In…

    Java 2023年5月26日
    00
  • 使用SpringBoot配置https(SSL证书)

    使用 Spring Boot 配置 HTTPS (SSL 证书) 的完整攻略 在本文中,我们将详细介绍如何使用 Spring Boot 配置 HTTPS (SSL 证书)。我们将介绍 HTTPS 的概念、配置方式和提供两个示例。 HTTPS 概念 HTTPS (Hyper Text Transfer Protocol Secure) 是一种通过 SSL/TL…

    Java 2023年5月15日
    00
  • WebSocket整合SSM(Spring,Struts2,Maven)的实现示例

    下面我将为你详细讲解“WebSocket整合SSM的实现示例”攻略。 一、实现方案 我们的实现方案是使用Spring+Struts2+MyBatis构建一个SSM项目并整合WebSocket。 1.1 准备工作 首先需要准备以下开发环境 JDK 1.8 Eclipse Tomcat 8.0及以上版本 Maven 1.2 导入项目 使用Maven创建一个Web…

    Java 2023年5月20日
    00
  • MySQL筑基篇之增删改查操作详解

    MySQL筑基篇之增删改查操作详解 一、准备工作 在开始进行MySQL的增删改查操作前,需要先做一些准备工作。首先需要安装MySQL数据库,可以通过官方网站下载,并安装在本地机器上。安装完成后,需要登录MySQL,创建数据库并创建数据表。 1.1 登录MySQL 在命令行或终端中输入以下代码,登录MySQL: mysql -u root -p 其中,root…

    Java 2023年5月26日
    00
  • 简单了解Java程序运行整体流程

    下面我将为你详细讲解“简单了解Java程序运行整体流程”的完整攻略。 1. Java程序运行流程 Java程序的运行可以分为三个主要步骤:编写代码、编译代码和运行程序。下面我将为你详细讲解这三个步骤: 1.1 编写代码 要编写Java程序,需要使用Java编程语言。Java是一种高级编程语言,非常易学易用。在编写Java程序时,可以使用任何文本编辑器。Jav…

    Java 2023年5月23日
    00
  • java GUI界面初步入门示例【AWT包】

    让我来详细讲解一下“java GUI界面初步入门示例【AWT包】”的完整攻略。 Java GUI界面初步入门示例【AWT包】 环境准备 在开始之前,需要确保你的电脑上已经安装了Java开发环境(JDK)和IDE(Integrated Development Environment),例如Eclipse或IntelliJ IDEA。这里以Eclipse为例。 …

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