SpringBoot教程(十三) | SpringBoot集成MybatisPlus(持久化框架)

一、MybatisPlus简介

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

Mybatis-Plus是一个国产框架,有中文的文档,所以使用起来还是很方便的,没有那么大的障碍。

文档地址:https://baomidou.com/introduce/

当前的最新版本是3.5.7
在这里插入图片描述

二、涉及常用的注解

在Spring Boot集成mybatis-plus时,出现的常用注解主要来自于几个不同的源头,具体说明如下:

在Spring Boot集成MyBatis-Plus时,出现的常用注解主要来自于两个主要源头:MyBatis-Plus本身和MyBatis(因为MyBatis-Plus是基于MyBatis的增强工具)。以下是具体说明:

MyBatis-Plus提供的注解

  • @TableName:用于指定实体类对应的数据库表名。这是MyBatis-Plus特有的注解,用于解决实体类名与数据库表名不一致的问题。
  • @TableId:用于指定实体类中的主键字段,并可以配置主键的生成策略(如自增、UUID等)。这也是MyBatis-Plus特有的注解,用于增强对主键字段的处理。
  • @TableField:用于指定实体类中的字段与数据库表中的列之间的映射关系。虽然MyBatis也提供了类似的映射功能,但@TableField提供了更多的配置选项,如是否更新、是否查询等。
  • @TableLogic:用于实现逻辑删除,而不是物理删除。当标记了@TableLogic的字段为特定值时(通常是某个标志位,如1表示未删除,0表示已删除),MyBatis-Plus会自动将删除操作转换为更新操作,从而只更新该字段的值,而不是从数据库中删除记录。
  • 其他MyBatis-Plus特有的注解,如@Version用于乐观锁控制等。

MyBatis提供的注解(在MyBatis-Plus中同样适用):

  • @Select@Insert@Update@Delete:这些注解用于直接在Mapper接口的方法上指定SQL语句,是MyBatis的核心注解之一。在MyBatis-Plus中,这些注解仍然可以使用,但MyBatis-Plus通过内置的方法提供了大量的CRUD操作,使得开发者在大多数情况下不需要直接使用这些注解。
  • @Param:用于给方法参数命名,在Mapper接口方法有多个参数时非常有用。MyBatis-Plus中同样支持这个注解。
  • @Results@Result:虽然这些注解在MyBatis-Plus中较少直接使用(因为MyBatis-Plus通过自动映射机制大大简化了结果集的处理),但在某些需要自定义映射规则的场景下仍然可以使用。

MyBatis-Spring-Boot-Starter提供的

mybatis-plus-boot-starter里面集成了MyBatis-Spring-Boot-Starter里面的功能

@Mapper
用途:这是MyBatis-Spring-Boot-Starter提供的一个注解,用于标记Mapper接口,以便Spring Boot能够自动扫描并注册这些Mapper接口为Bean。
但是,从Spring Boot 2.0开始,如果你将Mapper接口放在@MapperScan注解指定的包或其子包下,那么即使不使用@Mapper注解,Spring Boot也能够自动扫描到这些Mapper接口。

Spring Boot提供的

@MapperScan
用途:这是Spring Boot提供的一个注解,用于指定Mapper接口所在的包路径,以便Spring Boot能够自动扫描并注册这些Mapper接口为Bean。
如果你使用了@Mapper注解,但仍然希望有一个全局的配置来指定Mapper接口的位置,那么@MapperScan就非常有用。

三、集成步骤

1. 引入 依赖

<!--mybatis-plus
这个版本需要指定了,因为场景启动器里面没有 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MyBatis-Plus代码生成器(逆向工程)-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- MyBatis-Plus代码生成器所需引擎 
   模板引擎来生成代码文件 -->
<dependency>
   <groupId>org.freemarker</groupId>
   <artifactId>freemarker</artifactId>
   <version>2.3.31</version>
</dependency>

<!-- MySQL JDBC驱动 -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

<!--lombok用来简化实体类-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

上述的依赖中

  • mybatis-plus-boot-starter是核心的应用包

  • mybatis-plus-generator和 freemarker是用来逆向生成的,通过逆向生成的工具类,可以帮助我们生成相应的实体,mapper, service,controller。基本可以实现近乎0代码开发单表的增删改查。

2. 数据源和mybatis-plus配置

数据源配置:

# 数据源的类型
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# JDBC 驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JDBC URL
spring.datasource.url=jdbc:mysql://localhost:3306/sharding?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
# 用户名
spring.datasource.username=root
# 密码
spring.datasource.password=root

细节说明:
spring.datasource.type 在 Spring Boot 的配置中,主要指的是数据源的类型,但这个数据源类型往往与数据库连接池紧密相关。在大多数情况下,当我们讨论数据源类型时,我们实际上是在谈论数据库连接池的实现。

  • Spring Boot 1.x版本中 默认的数据源类型为Tomcat JDBC连接池
    spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
  • Spring Boot 2.x版本中 默认的数据源类型为HikariCP连接池
    spring.datasource.type=com.zaxxer.hikari.HikariDataSource
  • 现阶段也常用Druid连接池(这个后续有空再说)
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

MyBatis-Plus 配置

# Mapper 文件的扫描路径,可以有多个,支持使用通配符。
#也就是我们写在resources目录里面的xml文件。
mybatis-plus.mapper-locations=classpath*:mapper/**/*.xml

细节说明:

  1. 推荐使用classpath*前缀以确保资源能够被正确加载,无论它们位于类路径的哪个位置,包括嵌套在JAR文件中的位置
  2. mapper/**/*.xml
    这是最常见和推荐的方法。由于可以匹配零个或多个目录,因此它实际上会包括mapper目录本身及其所有子目录。这意味着,如果你的Mapper XML文件既在mapper目录下也在其子目录中,那么classpath*:mapper/**/*.xml将能够扫描到它们。

2. 开启MyBatisPlus的SQL日志(看需求)

方式 一:
使用 mybatis-plus.configuration.log-impl 配置
值是固定的

mybatis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值