SpringBoot快速教程四整合Mybatis-plus

Hello,大家好,我是Feri,一枚十多年的程序员,同时也是一名在读研究生,关注我,且看一个平凡的程序员如何在自我成长,CodingSir是我想打造一个编程社区,只为各位小伙伴提供编程相关干货知识,希望在自我蜕变的路上,我们一起努力,努力什么时候开始都不晚,我,从现在开始做起!

一、前言

Hello,终于过完十一假期了,也是2024年的最后一个假期,假期断更啦,今天重新出发,珍惜2024余下的时光,让我们一起逆袭吧!


我看最近也有小伙伴私聊我,想让搞一篇SpringBoot3版本整合最新版Mybatis-plus的教程方便自己日常无缝迁移,那么来了,本篇教程就是基于SpringBoot3.3.4整合最新版的Mybatis-plus的3.5.7的SpringBoot3专属版本,希望大家可以和之前的Mybatis做一下对比,俗话说,没有对比,就没有伤害!其实人生亦是如此,不要去对比太多,每一个人都是与众不同的,我们每一个人都是这个世界的闪光点,废话不多说,来,干货走起来!

二、实现

2.1 Mybatis-plus概述

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。核心特性,如下所示:

1.润物无声

只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。

2.效率至上

只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。

3.丰富功能

代码生成、自动分页、逻辑删除、自动填充、拦截器等功能一应俱全。

4.广泛认可

连续 5 年获得开源中国年度最佳开源项目殊荣,Github 累计 16K Star。

官网地址:MyBatis-Plus 🚀 为简化开发而生

2.2 Mybatis-plus核心功能

日常开发中,特别是中小型企业,使用Mybatis-plus平替Mybatis绝对好用,比如我自己接私活,都喜欢用它,简单省事,那么在开发中,我们主要使用Mybatis-plus的哪些功能呢,来解密一下:

1.自带的单表的CRUD

这样我们就不需要自己动手写单表的CRUD操作了,只需要简单的注解配合BaseMapper<T>接口即可实现丰富的CRUD操作,贼好使!


2.分页插件

Mybatis-plus自带了分页插件,相对于PageHelper还是差不多,配合Mybatis-plus好用的很,MyBatis-Plus 的分页插件 PaginationInnerInterceptor 提供了强大的分页功能,支持多种数据库,使得分页查询变得简单高效。关键支持很多数据库哈


3.条件构造器

MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。谁用谁知道,好用的一批!


4.代码生成器

MyBatis-Plus 代码生成器,通过 builder 模式可以快速生成你想要的代码,快速且优雅。不过一般不一定使用哈,主要是目前代码生成器太多啦,一般选择自己习惯的即可


5.流式查询

MyBatis-Plus 从 3.5.4 版本开始支持流式查询,这是 MyBatis 的原生功能,通过 ResultHandler 接口实现结果集的流式查询。这种查询方式适用于数据跑批或处理大数据的业务场景。

BaseMapper 中,新增了多个重载方法,包括 selectList, selectByMap, selectBatchIds, selectMaps, selectObjs,这些方法可以与流式查询结合使用。


6.批量操作

批量操作是一种高效处理大量数据的技术,它允许开发者一次性执行多个数据库操作,从而减少与数据库的交互次数,提高数据处理的效率和性能。在MyBatis-Plus中,批量操作主要用于以下几个方面:

  • 数据插入(Insert):批量插入是批量操作中最常见的应用场景之一。通过一次性插入多条记录,可以显著减少SQL语句的执行次数,加快数据写入速度。这在数据迁移、初始化数据等场景中尤为有用。
  • 数据更新(Update):批量更新允许同时修改多条记录的特定字段,适用于需要对大量数据进行统一变更的情况,如批量修改用户状态、更新产品价格等。
  • 数据删除(Delete):批量删除操作可以快速移除数据库中的多条记录,常用于数据清理、用户注销等场景。

7.……

还有其他不少功能,这里不展开细说,如有需要可以私信我,后续可以继续给大家展开来聊

2.3 SpringBoot3整合mybatis-plus实操

我们使用SpringBoot3.3.4版本整合Mybatis-plus3.5.7的SpringBoot3版本,Mybatis-plus有2套,版本号一样,但是一个是针对SpringBoot2的,另一个是针对SpringBoot3的,千万注意不要使用错误啦!

0.准备数据库的表

直接使用官网提供的SQL语句:

CREATE TABLE `user`

(

  id BIGINT NOT NULL COMMENT '主键ID',

  name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',

  age INT NULL DEFAULT NULL COMMENT '年龄',

  email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',

  PRIMARY KEY (id)

);

INSERT INTO `user` (id, name, age, email) VALUES
(1, 'CodingSir', 18, 'test1@baomidou.com'),
(2, 'Feri', 20, 'test2@baomidou.com'),
(3, '邢先生', 28, 'test3@baomidou.com'),
(4, '邢帅帅', 21, 'test4@baomidou.com'),
(5, '逆袭先生', 24, 'test5@baomidou.com');

2.创建SpringBoot项目,务必选择SpringBoot3的版本

3.pom.xml依赖jar

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.2.23</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  <version>3.5.7</version>
</dependency>
<dependency>
  <groupId>com.github.xiaoymin</groupId>
  <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
  <version>4.4.0</version>
</dependency>

4.基于EasyCode生成源代码

5.修改生成的代码

主要修改实体类,和新增R类和ApiController

6.实现配置

在application.yaml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///db_codingsir
    username: root
    password: xing1688
    type: com.alibaba.druid.pool.DruidDataSource

在开关类中实现配置(其实应该单独配置,懒省事啦)

@SpringBootApplication
@MapperScan(basePackages = "com.feri.springbootmybatisplus.dao")
public class SpringBootMybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMybatisplusApplication.class, args);
    }
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
        return interceptor;
    }
}

7.运行测试

2.4 Mybatis-plus重点归纳

来,代码写完了,梳理一下,刚刚代码中的重点:

1.实体类

针对entity层,可以使用如下三个注解

序号

注解名称

范围

作用

1

@TableName

修饰类

标记类名和表名不一致

2

@TableId

修饰属性

标记主键,设置自增的ID

3

@TableField

修饰属性

设置属性对应的数据库字段信息

@Data
@TableName("user")
public class User{
    //主键ID
    private Long id;
    //姓名
    private String name;
    //年龄
    private Integer age;
    //邮箱
    private String email;
}

2.持久层

Mybatis-plus针对持久层提供了接口:BaseMapper

BaseMapper 是 Mybatis-Plus 提供的一个通用 Mapper 接口,它封装了一系列常用的数据库操作方法,包括增、删、改、查等。通过继承 BaseMapper,开发者可以快速地对数据库进行操作,而无需编写繁琐的 SQL 语句。

public interface UserDao extends BaseMapper<User> {

}

3.业务接口层

IService 是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询和分页等。通过继承 IService 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。

IService 接口中的方法命名遵循了一定的规范,如 get 用于查询单行,remove 用于删除,list 用于查询集合,page 用于分页查询,这样可以避免与 Mapper 层的方法混淆。

public interface UserService extends IService<User> {

}

4.业务实现层

还有配套的ServiceImpl<Dao, Entity>是对IService的实现,这样我们就无需实现即可使用

@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserService {

}

5.分页插件

分页插件的使用,必须进行配置,不然不会生效哈

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
    // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
    return interceptor;
}

三、总结

这个就是使用SpringBoot3.3.4版本整合的最新版本的Mybatis-plus的简单使用,其实你会发现和之前SpringBoot2的时候差不多,在使用上没有什么改变。具体在项目开发的时候进行技术选型的时候,还是需要团队自己评估使用Mybatis还是Myabtis-plus。如果你还有什么想继续学习的,欢迎随时联系我,持续给大家带来干货,助力我们快乐工作,幸福生活!

源码地址给大家,有需要的自取:SpringBootMybatisplus: SpringBoot3.3.4整合最新版Mybatis-plus,欢迎使用

好啦,今天这篇就打这啦,有任何问题可以随时进行评论交流,如果你有什么想要Feri更新的,请关注CodingSir查看更新的内容,也可以随时关注,私信我哟,成长的路上,有你们相伴,真是人生一大幸事!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值