Java之路—— 一文带你走进MybatisPlus

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Java之路—— 一文带你走进MybatisPlus

前言


MyBatis-Plus(简称MP)是在MyBatis的基础上进行增强和扩展的工具,目的是提供更便捷的CRUD操作和其他常用功能,MyBatis-Plus与MyBatis的一些区别和联系:


关系: MyBatis-Plus是基于MyBatis的增强工具,可以看作是对MyBatis的功能扩展。


使用方式: MyBatis是一个纯粹的SQL映射框架,需要手动书写SQL语句和Mapper接口,而MyBatis-Plus则封装了大部分常用的增删改查操作,避免了手动编写重复的代码。通过继承BaseMapper,就可以获得基本的CRUD方法。


功能扩展: MyBatis-Plus在MyBatis的基础上提供了一系列增强功能,如自动生成代码、分页插件、逻辑删除、多租户支持、动态表名等。这些功能可以减少开发人员的工作量,提高开发效率。


数据库兼容性: MyBatis虽然支持多种数据库,但在不同数据库之间可能存在一些语法差异。MyBatis-Plus会自动处理这些差异,并提供统一的API,使得开发者可以方便地切换不同的数据库。


社区活跃度: MyBatis和MyBatis-Plus都有活跃的社区支持和维护,提供了官方文档、示例代码和解决方案。开发者可以根据自身需求来选择使用哪个框架。


MyBatis是一个灵活且强大的SQL映射框架,适用于需要更灵活控制SQL语句的场景;而MyBatis-Plus则提供了更加便捷的数据访问和常用功能,适用于快速开发和提高开发效率的需求。两者可以结合使用,根据具体情况选择使用MyBatis或MyBatis-Plus。

一、什么mybatisPlus


MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,它简化了与数据库的交互操作,并提供了一些额外的特性和功能,使得开发人员可以更高效地编写数据库访问层代码。


下面是MyBatis-Plus的主要特点和功能:


1. 简化CRUD操作: MyBatis-Plus通过代码生成器和通用CRUD接口,自动生成数据表对应的实体类、Mapper接口和XML映射文件,并提供了一系列常用的CRUD方法,大幅度减少了编写和维护CRUD代码的工作量。


2. 条件构造器: MyBatis-Plus提供了Lambda方式的条件构造器,可以通过链式调用的方式灵活构建查询条件,避免了手写SQL语句的繁琐和容易出错。


3. 分页插件: MyBatis-Plus内置了分页插件,可以方便地进行分页查询操作,减轻了手动处理分页逻辑的负担。


4. 乐观锁支持: MyBatis-Plus提供了乐观锁的支持,通过在实体类中添加版本字段,并在更新操作时自动校验版本号,确保数据一致性和并发安全。


5. 主键生成策略: MyBatis-Plus支持多种主键生成策略,如自增主键、UUID、雪花算法等,可以根据具体需求选择合适的主键生成方式。


6. 逻辑删除支持: MyBatis-Plus提供了逻辑删除的功能,可以通过配置实现软删除,避免了物理删除对数据的永久性影响。


7. 自动填充字段: MyBatis-Plus支持自动填充字段,如创建时间、更新时间等,减少了手动设置这些字段的工作量。


8. 多租户支持: MyBatis-Plus提供了多租户的支持,可以根据不同的租户ID自动过滤查询结果,并保证租户数据的隔离性和安全性。


二、mybatisplus的开发步骤


使用MyBatis-Plus进行开发的基本步骤:


1. 引入依赖: 在项目中引入MyBatis-Plus的相关依赖,可以通过Maven或Gradle进行管理。通常需要引入mybatis-plus-core和对应的数据库驱动依赖。


2. 创建数据库表:根据业务需求,在数据库中创建相应的表结构。


3. 配置数据源: 在项目的配置文件中配置数据库连接信息,包括数据库驱动、URL、用户名和密码等。


4. 创建实体类: 根据数据库表的结构,创建对应的Java实体类。使用MyBatis-Plus提供的注解或继承父类来简化实体类的定义。


5. 创建Mapper接口: 使用MyBatis-Plus的方式,无需手动编写Mapper接口和SQL语句。直接继承BaseMapper接口,并进行相关的泛型配置即可。


6. 配置MapperScannerConfigurer: 在项目的配置文件中配置Mapper接口的扫描路径,使得MyBatis-Plus能够自动扫描并生成Mapper代理对象。


7. 编写Service层代码: 创建Service接口和实现类,定义业务逻辑。可以使用MyBatis-Plus提供的Service层抽象接口和实现类来简化操作。


8. 运行测试: 编写测试类,调用Service层代码进行数据操作,并检查结果是否符合预期。


Mybatis-Plus还提供了丰富的查询、更新、删除等操作方法,以及自动生成代码的功能,可以进一步简化开发过程。同时,建议参考MyBatis-Plus的官方文档,深入了解其更多的功能和用法。


三、快速开始


1.首先需要添加 MyBatis-Plus 依赖

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


完整性依赖文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lyh.test</groupId>
    <artifactId>test-mybatis-plus</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>test-mybatis-plus</name>
    <description>测试 -- 测试 MyBatis-Plus 功能</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


2.使用一个表

68182b472d4a4153a2b71bd45ca25f0a.png


3.配置xxx.yml文件中配置 mysql 数据源信息

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8


4.编写表对应的 测试实体类

@Data
public class User {
    private Long id;
    private String name;
    private int age;
    private String email;
}


5.编写操作实体类的 Mapper 类。
 直接继承 BaseMapper,这是 mybatis-plus 封装好的类。

import bean.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}


6.主启动

@MapperScan("mapper")
@SpringBootApplication
public class TestMybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestMybatisPlusApplication.class, args);
    }
}


7.测试类

@SpringBootTest
class TestMybatisPlusApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        for(User user:userList) {
            System.out.println(user);
        }
    }
}


ok,大概就是这个样子了,详细的过程需要我们去看官方的文档

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Java 数据库连接 数据库
探究Java中的MyBatis Plus注解 @TableField:灵活处理字段映射与自动填充
在数据库操作中,字段映射和字段填充是开发者经常需要处理的问题。MyBatis Plus作为一款优秀的ORM框架,提供了注解 `@TableField`,能够帮助开发者更加灵活地处理字段映射,以及在特定场景下实现自动填充功能。本文将深入探讨 `@TableField` 注解的用法及其在持久层开发中的应用。
2690 1
|
7天前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
4月前
|
SQL druid Java
java mysql druid mybatis-plus里使用多表删除出错的一种处理方式
java mysql druid mybatis-plus里使用多表删除出错的一种处理方式
58 0
|
2月前
|
消息中间件 Java 数据库连接
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
理解java的springboot+mybatisplus+dubbo+nacos+kafka这一套技术栈
70 0
|
4月前
|
SQL Java
【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
|
4月前
|
前端开发 Java 数据库
Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)
Java图书目录管理系统CRUD展示(springboot+vue+mybatis-plus)
41 0
|
11月前
|
Java
【Java异常】com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method fo
【Java异常】com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not use this method fo
485 0
|
Java 关系型数据库 数据库连接
探索Java中的MyBatis Plus注解 @DbType:灵活处理数据库类型
在数据库操作中,不同的数据库系统可能具有不同的数据类型,如MySQL、Oracle、SQL Server等,这就需要我们在操作中处理不同的数据库类型。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@DbType`,使得开发者能够更加灵活地处理数据库类型,从而在多数据库支持下轻松切换。本文将详细介绍 `@DbType` 注解的用法及其在持久层开发中的应用。
1089 1
|
Java 数据库连接 数据库
解析Java中的MyBatis Plus注解 @FieldFill:优雅处理字段填充
在数据库操作中,有些字段的值在插入或更新时需要自动填充,比如创建时间、更新时间等。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@FieldFill`,使得开发者能够更加灵活地处理字段的自动填充,从而减少了重复的代码编写。本文将详细介绍 `@FieldFill` 注解的用法及其在持久层开发中的应用。
2262 1
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @TableLogic:优雅实现逻辑删除功能
在数据库操作中,逻辑删除是一种常见的需求,它能够将数据标记为已删除状态而不是直接从数据库中删除。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@TableLogic`,使得开发者可以轻松实现逻辑删除功能,而不必手动编写复杂的SQL语句。本文将详细介绍 `@TableLogic` 注解的用法及其在持久层开发中的应用。
2088 1