> 文章列表 > 【MybatisPlus快速入门】—— 基础入门

【MybatisPlus快速入门】—— 基础入门

【MybatisPlus快速入门】—— 基础入门

入门篇

  • 我们先简单回顾一下 Mybatis 的用法,再引出MybatisPlus

1.1 Mybatis 框架回顾

🌔 1、什么是Mybatis框架呢?

  • 一个持久层框架,目的是简化持久层的开发
  • 我们就使用springboot整合Mybatis,实现Mybatis框架的搭建

🌔 2、创建SpringBoot工程

  • 我使用的是 IDEA 2022.2.3、 apache-maven-3.8.3
  • 具体创建工程的步骤此处就不给出了,直接贴上项目结构与相关代码

【MybatisPlus快速入门】—— 基础入门

1️⃣ 在本地新建数据库
【MybatisPlus快速入门】—— 基础入门

分别执行建表和创建数据的SQL

# 建表
DROP TABLE IF EXISTS user;
CREATE TABLE user(id BIGINT(20) NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
# 插入数据
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

2️⃣ 引入依赖 【我以我使用的版本为例】

<?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.7.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.powernode</groupId><artifactId>mp01</artifactId><version>0.0.1-SNAPSHOT</version><name>mp01</name><description>mp01</description><properties><java.version>1.8</java.version></properties><dependencies><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></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version></dependency><!--mybatis起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><!--web环境起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok插件依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3️⃣ 创建实体类

  • 此处引入了 Lombok 的依赖简化开发
    • @Data 注解在类上,提供类的get、set、equals、hashCode、toString等方法
      @AllArgsConstructor 注解在类上,提供满参构造
      @NoArgsConstructor 注解在类上,提供空参构造

Lombok(Project Lombok)是一个Java库,它提供了一组注解和工具,用于简化Java代码的编写。Lombok的目标是通过自动生成样板代码来减少Java编程中的样板代码量,从而使开发人员能够更快地编写Java代码
使用Lombok,您可以通过添加一些注解来自动生成getter和setter方法、构造函数、equals和hashCode方法、日志记录和其他常见任务所需的代码。这可以大大减少需要手动编写和维护的代码,使Java代码更加清晰、简洁和易于维护。
Lombok还提供了其他一些有用的注解和工具,例如 @Data 注解,它可以自动生成getter和setter方法,以及equals和hashCode方法。@Builder注解可以为您的类自动生成构造器,并支持流畅的API编程风格。@SneakyThrows注解可以将受检异常转换为未受检异常。

【MybatisPlus快速入门】—— 基础入门

package com.powernode.domain;import lombok.*;/*** @author Bonbons* @version 1.0*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Long id;private String name;private Integer age;private String email;
}

4️⃣ 编写Mapper接口

  • @Mapper 作用在接口上,扫描到该注解后,会根据接口创建该接口的实现类对象
package com.powernode.mapper;import com.powernode.domain.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** @author Bonbons* @version 1.0*/
@Mapper
public interface UserMapper {List<User> selectAll();
}

5️⃣ 编写映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.powernode.mapper.UserMapper"><select id="selectAll" resultType="com.powernode.domain.User">select * from user</select>
</mapper>

6️⃣ 编写Service接口

package com.powernode.service;import com.powernode.domain.User;import java.util.List;/*** @author Bonbons* @version 1.0*/public interface UserService {List<User> selectAll();
}

7️⃣ 编写Service接口的实现类

package com.powernode.service.impl;import com.powernode.domain.User;
import com.powernode.mapper.UserMapper;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author Bonbons* @version 1.0*/
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> selectAll() {return userMapper.selectAll();}
}

8️⃣ 编写 Controller 控制器

package com.powernode.controller;import com.powernode.domain.User;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author Bonbons* @version 1.0*/
@RestController
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/selectAll")public List<User> selectAll(){return userService.selectAll();}
}

9️⃣ 编写SpringBoot核心配置文件

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 111111url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false

在本地浏览器发送请求测试: localhost:8080/selectAll 【我的浏览器安装了 JSON 插件】

【MybatisPlus快速入门】—— 基础入门

1.2 Mybatis 框架的开发效率问题分析

  • 我们来思考一下,Mybatis 框架的开发效率怎么样?

    • 开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手
  • 从这个角度思考,每当我们需要编写一个SQL需求的时候,我们需要做几步
    【1】Mapper 接口提供一个抽象方法
    【2】Mapper 接口对应的映射配置文件提供对应的标签和 SQL 语句
    【3】在 Service 中依赖Mapper实例对象
    【4】调用 Mapper 实例中的方法
    【5】在 Controller 中依赖 Service 实例对象
    【6】调用 Service 实例中的方法

通过上面的发现,对于一个SQL需求,无论是单表还是多表,我们是需要完成如上几步,才能实现SQL需求的开发

  • 但是在开发中,有一些操作是通用逻辑,这些通用逻辑是可以被简化的,例如:
    【1】对于dao,是否可以由框架帮我们提供好单表的Mapper抽象方法,和对应的SQL实现,不需要程序员去实现这些
    【2】对于service,使用可以有框架直接帮我们提供好一些service的抽象方法,和对应的实现,不需要程序员去实现这些
    【3】一些其他的企业开发中所需要的操作

  • 分析到这里我们发现,其实核心框架并没有发生变化,依然还是Mybatis,只不过我们希望对于Mybatis进行一些封装和进化,让它更加的好用,更加的易用。

    • MybatisPlus它来了,他是Mybatis的一款增强工具。

1.3 MybatisPlus 的介绍

  • MyBatis-Plus 简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

1️⃣ MybatisPlus的特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 deleteupdate 操作智能分析阻断,也可自定义拦截规则,预防误操作

2️⃣ 支持的数据库

  • 任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持
  • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb
  • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库

3️⃣ MybatisPlus 的架构模型

【MybatisPlus快速入门】—— 基础入门

4️⃣ 小结

  • 本章节主要介绍了传统的Mybatis框架的开发效率问题,通过发现问题,我们期望得到一款增强工具,在不改变Mybatis核心原理的同时,解决Mybatis开发效率问题,并提供其他数据库所需要的功能

  • 通过了解MybatisPlus,我们得知,它是一款国产的增强工具,极大的简化了Mybatis框架操作,降低了Mybatis框架的学习成本,提高了开发效率,在国内十分流行

1.4 MybatisPlus 入门案例

  • 学习 MybatisPlus 需要有 Mybatisspringboot 相关的基础
  • 依旧是通过给出代码的形式演示如何使用 MybaitsPlus 来完成入门案例 【和上面的案例共用一个工程、一个数据库,只不过是创建一个新的模块】

1️⃣ 引入依赖

<?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.7.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.powernode</groupId><artifactId>mp02</artifactId><version>0.0.1-SNAPSHOT</version><name>mp02</name><description>mp02</description><properties><java.version>1.8</java.version></properties><dependencies><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></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version></dependency><!--代码生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3</version></dependency><!--freemarker模板依赖--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2️⃣ 创建实体类

package com.powernode.domain1;import lombok.*;/*** @author Bonbons* @version 1.0*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User extends Model<User> {private Long id;private String name;private Integer age;private String email;
}

3️⃣ 编写Mapper接口

  • 此处让我们的接口去继承 BaseMapper接口
    • BaseMapper接口是MyBatisPlus提供的一个公共的Mapper接口,它提供了一系列基本的CRUD方法,包括插入、更新、删除和查询等操作。我们只需要让自己的Mapper接口继承BaseMapper接口,就可以直接使用这些方法,而无需再次手动编写dao接口和mapper映射文件。
    • 另外,让Mapper接口继承BaseMapper接口,还可以获得MyBatisPlus提供的一些高级特性,比如Wrapper 查询、分页查询、批量插入和更新等操作。这些功能大大简化了代码的编写,提高了开发的效率和代码的可维护性。
    package com.powernode.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.powernode.domain1.User;
    import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** @author Bonbons* @version 1.0*/
    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    }
    

4️⃣ 编写 Service 接口

  • 此处我们的Service接口去继承IService接口

    • IService是一个接口,是MyBatisPlus框架提供的面向服务接口的公共接口。让我们的Service接口继承IService接口意义在于,可以使用MyBatisPlus提供的一些通用的服务方法,简化服务层代码的编写,并使代码结构更加清晰和高效。
      具体来说,让我们的Service接口继承IService接口,可以有以下的好处:

      • 提供了一些通用的服务方法:IService接口提供了一些通用的服务方法,比如插入、更新、删除、查询、分页查询等方法。我们可以直接使用这些方法,避免重复的CRUD操作,避免代码重复性和冗余。
      • 定义了基础的 Service 层的方法:IService接口定义了一些基础的Service层方法,例如save、removeById、list等方法。通过继承IService接口,我们可以避免编写重复的业务逻辑代码,使代码更加简洁和易于维护。
      • 可以加入自定义的服务方法:除了使用IService接口提供的通用服务方法,我们也可以在继承IService接口的基础上,添加自定义的服务方法,以满足特定业务需求。
        使代码结构更加清晰:通过让我们的Service接口继承IService接口,可以使我们的代码结构更加清晰,更加符合分层架构的概念。同时,也可以提高代码的可读性和可维护性,便于团队的协作开发。
    • 总之,让我们的Service接口继承IService接口是MyBatisPlus框架提供的一种便捷方式,可以优化服务层代码的编写和维护,从而提升开发效率和代码质量。

    package com.powernode.service;import com.baomidou.mybatisplus.extension.service.IService;
    import com.powernode.domain1.User;import java.util.List;/*** @author Bonbons* @version 1.0*/
    public interface UserService extends IService<User> {List<User> selectList();
    }
    

5️⃣ 编写Service接口的实现类

  • ServiceImpl是一个MyBatisPlus框架提供的Service层抽象类,它实现了IService接口中的方法,并提供了一些钩子方法,可以供我们在子类中进行自定义实现。我们的Service层实现类可以继承ServiceImpl类,从而获得IService接口的实现,以及ServiceImpl中提供的一些便捷的Service层操作。
    具体来说,ServiceImpl类主要有以下特点:

  • 实现了IService接口:ServiceImpl类实现了IService接口,提供了一些通用的服务方法,比如插入、更新、删除等方法。

  • 提供了一些钩子方法:ServiceImpl类提供了一些钩子方法,比如beforeSave、beforeRemove等方法。子类可以重写这些方法,来添加自定义的逻辑。
    封装了一些基本操作:ServiceImpl类封装了一些基本的操作,比如获取主键ID、条件构造器等操作,方便我们进行开发。
    可以加入自定义的服务方法:除了使用ServiceImpl类提供的通用服务方法,我们也可以在ServiceImpl类的基础上,添加自定义的服务方法,以满足特定业务需求。

  • 总之,ServiceImpl类是一个Service层抽象类,它提供了IService接口的实现,以及一些钩子方法和便捷的操作,可以帮助我们简化Service层代码的编写,并使代码结构更加清晰和易于维护。通过集成ServiceImpl类,我们可以更加高效地实现我们的Service层逻辑。

    package com.powernode.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.powernode.domain1.User;
    import com.powernode.mapper.UserMapper;
    import com.powernode.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;import java.util.List;/*** @author Bonbons* @version 1.0*/
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> selectList() {return userMapper.selectList(null);}
    }
    

6️⃣ 编写 Controller 控制器

package com.powernode.controller;import com.powernode.domain1.User;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author Bonbons* @version 1.0*/
@RestController
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/selectList")public List<User> selectList(){return userService.selectList();}
}

7️⃣ 编写SpringBoot核心配置文件

spring:datasource:username: rootpassword: 111111url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=falsedriver-class-name: com.mysql.cj.jdbc.Driver

在浏览器中发起请求: localhost:8080/selectList 测试

【MybatisPlus快速入门】—— 基础入门
8️⃣ 内容铺叙

  • 为了更方便的案例演示以及功能测试,在之后的部分,我们使用SpringBoot为我们提供的测试类进行测试
    package com.powernode;import com.powernode.domain.User;
    import com.powernode.mapper.UserMapper;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
    class Mp02ApplicationTests {@Autowiredprivate UserMapper userMapper;@Testvoid selectList() {List<User> users = userMapper.selectList(null);System.out.println(users);}
    }
    

【MybatisPlus快速入门】—— 基础入门

  • 为了精简SpringBoot控制台打印的日志内容,我们在配置文件中进行配置,关闭SpringBootMyBatisPlusLogo

    spring:main:banner-mode: off
    mybatis-plus:global-config:banner: false
    
  • 为了更方便的查看执行SQL的代码,我们开启MybatisPlus的执行日志

    mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

基础篇

  • 包括通用 Mapper 接口介绍、通用 Service 接口介绍、以及自定义接口介绍

    • 说白了就是关于这三个方面的最基础的增删改查API的介绍
  • 此处直接给出这部分测试的完整代码

    package com.powernode;import com.powernode.domain1.User;
    import com.powernode.mapper.UserMapper;
    import com.powernode.service.UserService;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
    class Mp02ApplicationTests {@Autowiredprivate UserMapper userMapper;@Autowiredprivate UserService userService;//查询所有@Testvoid selectList() {List<User> users = userMapper.selectList(null);System.out.println(users);}//简单插入@Testvoid insert(){User user = new User(6L, "LiHua", 21, "123@qq.com");userMapper.insert(user);}//简单删除@Testvoid deleteOne(){userMapper.deleteById(6L);}//简单修改@Testvoid updateById(){//将我们修改后的数据封装成对象User user = new User();//我们要修改的用户的iduser.setId(6L);//我们要修改的信息user.setName("贾斯汀");user.setAge(35);user.setEmail("2192@qq.com");userMapper.updateById(user);}//简单查询@Testvoid selectById(){User user = userMapper.selectById(6L);System.out.println(user);}//UserService的插入操作@Testvoid insertService(){User user = new User(7L, "zhangsan", 22, "zhangsan@qq.com");userService.save(user);}//UserService的删除操作@Testvoid deleteService(){userService.removeById(7L);}//UserService的修改操作@Testvoid updateService(){User user = new User();user.setId(6L);user.setAge(40);userService.updateById(user);}//UserService查询@Testvoid selectService(){List<User> users = userService.selectList();System.out.println(users);}//测试我们自己定义的mapper接口方法@Testvoid testMyMethod(){User user = userMapper.selectByName("Tom");System.out.println(user);}
    }
    

一下是补充内容的相关说明:

1️⃣ Service接口、Service接口实现类、IService接口、ServiceImpl实现类之间的关系图

【MybatisPlus快速入门】—— 基础入门

2️⃣ 自定义接口的相关内容

  • MybatisPlus除了给我们提供了这些丰富的接口方法以外,对于我们自己的需求,也可以编写自定义的接口方法,我们通过自己编写SQL语句的形式,实现想要的SQL需求

    • 需要我们自己编写Mapper接口和对应的映射文件
    package com.powernode.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import com.powernode.domain1.User;
    import org.apache.ibatis.annotations.Mapper;import java.util.List;/*** @author Bonbons* @version 1.0*/
    @Mapper
    public interface UserMapper extends BaseMapper<User> {//自定义Mapper,为了实现我们的特殊需求User selectByName(String name);
    }
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--需要指定接口的全限定类名-->
    <mapper namespace="com.powernode.mapper.UserMapper"><!--根据名字查询用户信息--><select id="selectByName" resultType="com.powernode.domain1.User">select * from user where name = #{name}</select>
    </mapper>
    

3️⃣ 测试运行截图

  • 以下是Mapper接口相关的增删改查

(1)userMapper.insert(User user)

【MybatisPlus快速入门】—— 基础入门
【MybatisPlus快速入门】—— 基础入门
(2)userMapper.deleteById(Long id): 【id的类要实现序列化】
【MybatisPlus快速入门】—— 基础入门
(3)userMapper.updateById(User user)

【MybatisPlus快速入门】—— 基础入门
【MybatisPlus快速入门】—— 基础入门
(4)userMapper.selectById(Long id)

【MybatisPlus快速入门】—— 基础入门

  • 以下是 Service 接口相关内容

(1)userService.save(User user)

【MybatisPlus快速入门】—— 基础入门
【MybatisPlus快速入门】—— 基础入门
(2)userService.removeById(Long id)

【MybatisPlus快速入门】—— 基础入门
(3)userService.updateById(User user)
【MybatisPlus快速入门】—— 基础入门
【MybatisPlus快速入门】—— 基础入门
(4)userService.selectList()

【MybatisPlus快速入门】—— 基础入门

  • 以下是自定义Mapper的相关功能

userMapper.selectByName(String name)

【MybatisPlus快速入门】—— 基础入门