当前位置: 首页 > article >正文

SpringBoot配置MybatisPlus

文章目录

  • 介绍
  • 特性
  • 工作流程图
  • 添加依赖
    • Spring Boot2
    • Spring Boot3
  • 配置
  • 定义Mapper接口并继承BaseMapper
  • Server 接口
    • 自定义 Service 接口继承 IServie 接口
    • 自定义 Service 实现类,实现自定义接口并继承 ServiceImpl
  • 添加Config类

介绍

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


特性

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


工作流程图

屏幕截图 2024-08-29 162823.png



添加依赖

pom.xml中引入 **MyBatis-Plus Starter **依赖

Spring Boot2

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

Spring Boot3

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  <version>3.5.7</version>
</dependency>

配置

application.yml 配置文件中添加数据库及mybatis-plus的相关配置:

# DataSource Config
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_data_base_name?useSSL=false&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver		# 数据库类型的 JDBC 驱动程序,需要添加MySQL依赖
    username: root	# 连接数据库的用户名
    password: test	# 密码
  sql:
    init:
      mode: always
      
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  type-aliases-package: com.nskm.entity	# 扫描实体,这里是实体类存放的包名
  configuration:
      map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射,true表示开启
  global-config:
    db-config:
      logic-delete-field: deleted # 全局逻辑删除字段名
      logic-delete-value: 0 # 逻辑已删除值
      logic-not-delete-value: 1 # 逻辑未删除值



spring.datasource.driver-class-name 的配置取决于使用的数据库类型。不同的数据库有不同的 JDBC 驱动程序。
MySQL:

driver-class-name: com.mysql.cj.jdbc.Driver

PostgreSQL:

driver-class-name: org.postgresql.Driver

SQL Server:

driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

Oracle:

driver-class-name: oracle.jdbc.OracleDriver

H2(内存数据库,通常用于开发和测试):

driver-class-name: org.h2.Driver



定义Mapper接口并继承BaseMapper

MybatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库信息。

public interface UserMapper extends BaseMapper<User> {

}



通过继承BaseMapper,Server层可以直接使用BaseMapper所提供的方法,这意味着像下面一样功能的函数无需我们自己定义,直接使用便可,非常的方便👍。
在这里插入图片描述


Server 接口

自定义 Service 接口继承 IServie 接口

public interface IUserService extends IService<User> {

}

自定义 Service 实现类,实现自定义接口并继承 ServiceImpl

public class userServiceImpl extends ServiceImpl<UserMapper, User> impements IUserService {

}

添加Config类

在程序中添加MybatisPlusConfig类。例如,可以新建一个config软件包,在里面新建MybatisPlusConfig类

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 这里根据数据库类型而定,这里的连接的数据库类型为POSTGRE_SQL,如果是MYSQL就将POSTGRE_SQL更改为MYSQL
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
        return interceptor;
    }
}


http://www.kler.cn/news/284038.html

相关文章:

  • Docker基本使用:根据mysql镜像创建mysql容器
  • 四、监控搭建-Prometheus-采集端批量部署
  • TCP/UDP的对比,粘包分包抓包,http协议
  • MYSQL集群技术
  • JavaScript 网页设计案例
  • 12、stm32通过dht11读取温湿度
  • Elasticsearch简单介绍
  • 智慧高校迎新服务平台的设计与实现---附源码92489
  • http方法调用接口
  • Django如何实现websocket
  • 【工作实践】MVEL 2.x语法指南
  • vscode在html中的使用
  • 多进程比多线程开销大的原因
  • 海绵城市雨水监测系统
  • C++:Github开源7.8Kstar的线程池介绍
  • 如何在没有密码的情况下解锁 Oppo 手机?5 种简单的方法
  • hadoop日志文件
  • 随身wifi靠谱吗?适合哪类人使用?靠谱随身wifi怎么选?热门随身wifi推荐测评!
  • CRC32
  • 使用[KafkaStreams流计算框架实时计算产生报警(升级报警)
  • 深入解析Nginx的Fair调度算法:实现请求的智能分配
  • 中国各地区数字经济发展对环境污染的影响数据(2011-2021年)
  • 坐牢第三十天(c++)
  • 【微信小程序】分包--独立分包
  • 请问基于规则和强化学习的各自的优缺点有哪些?应用场景有哪些?今天的北京机器人展上的技术专家的技术
  • 学习日志30
  • 鸿蒙( Beta5.0版)开发实战:自定义TabBar页签
  • 新加坡服务器解决访问慢的方法有哪些?
  • LSTM唐诗生成
  • SX_Git Graph图形化案例详解_20