SpringBoot整合MybatisPlus

news2025/8/6 6:29:19

文章目录

  • 前言
  • 一、MybatisPlus是什么?
  • 二、使用步骤
    • 1.导入依赖
    • 2.编写配置文件
    • 3.编写Controller和实体类
    • 4.编写持久层接口mapper
    • 5.启动类加包扫描注解
    • 6.测试
  • 总结


前言

本篇记录一下SpringBoot整合MybatisPlus


一、MybatisPlus是什么?

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

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 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

二、使用步骤

1.导入依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.9</version>
        </dependency>

2.编写配置文件

application.yml

#配置连接数据库
spring:
  datasource:
    username: 用户名
    password: 密码
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/库名?serverTimezone=Asia/Shanghai&characterEncoding=utf8
    type: com.alibaba.druid.pool.DruidDataSource

#配置mybatis-plus
mybatis-plus:
  configuration:
    #日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #驼峰形式显示
    map-underscore-to-camel-case: true
  #扫描mapper.xml文件
  mapper-locations: classpath:mapper/*.xml

3.编写Controller和实体类

实体类

package com.lzl.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 16:57
 */
//表名注解,标识实体类对应的表
@TableName("user1")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //主键注解,实体类主键字段,IdType设置主键生成策略
    @TableId(type = IdType.AUTO)//这里如果设置为 IdType.AUTO,表中的主键字段也要设置成自增长
    private Integer id;
    //字段注解(非主键),编写数据库中的字段名(可以解决属性名和列名不一致)
    @TableField("name")
    private String name;
    @TableField("password")
    private String password;
}

控制器:

package com.lzl.controller;

import com.lzl.mapper.UserMapper;
import com.lzl.pojo.User;
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 lzl
 * @Date 2023/3/7 16:56
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserMapper mapper;
    @RequestMapping("/findAll")
    public List<User> findAll(){
        return mapper.selectList(null);
    }
}

4.编写持久层接口mapper

package com.lzl.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lzl.pojo.User;
import org.springframework.stereotype.Repository;

/**
 * --效率,是成功的核心关键--
 *
 * @Author lzl
 * @Date 2023/3/7 17:02
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

}

5.启动类加包扫描注解

在这里插入图片描述

6.测试

启动项目访问接口
在这里插入图片描述
成功!


总结

本篇只是对MybatisPlus的简单整合,后续会再出一期详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决

分析一段appium的日志来分析webview的工作原理&#xff0c;文章尾部附有自动化脚本及完整日志&#xff1a; 解析&#xff1a; 获取上下文列表 服务端发送命令adb shell cat /proc/net/unix获取域套接字列表。那什么是域套接字呢&#xff1f; 域套接字&#xff1a;是unix系统里…

旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标

旋转矩阵的作用&#xff1a;世界坐标变换&#xff1b;求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系2、世界坐标变换3、求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系 以下数据以平面直角坐标系为例&#xff0c;三维空间同理 上图中&#xff0c;…

第七章:Java常用类

第七章&#xff1a;Java常用类 7.1&#xff1a;字符串相关的类 String的特性 String表示是字符串&#xff0c;使用一对""引起来表示。 String声明为final的&#xff0c;不可被继承。 String实现了Serializable、Comparable接口&#xff0c;表示字符是支持序列化和…

【WPF 值转换器】ValueConverter 进阶用法

【WPF 值转换器】ValueConverter 进阶用法介绍基类实现子类实现效果介绍 值转换器在WPF开发中是非常常见的&#xff0c;当然不仅仅是在WPF开发中。值转换器可以帮助我们很轻松地实现&#xff0c;界面数据展示的问题&#xff0c;如&#xff1a;模块隐藏显示、编码数据展示为可读…

拼多多跨境电商业务将正式登陆澳洲,持续助力中国制造业开拓全球市场

配图来自Canva可画 拼多多出海又有新进展。据最新消息&#xff0c;拼多多跨境电商业务将于3月13日正式进入澳大利亚、新西兰&#xff0c;持续推动中国制造业直连澳洲以及全球市场。 去年9月&#xff0c;拼多多正式在北美地区上线跨境电商平台TEMU。自上线至今&#xff0c;TEM…

硬件设备二 调试分类、软/硬件断点、OpenOCD、JLink、STLink 使用

近期工作开始主用 OpenOCD 来进行相关开发工作的调试&#xff0c;因此本文重点来学习一下&#xff01;本文以 OpenOCD 为重点&#xff0c;辅以 JLink、STLink 作为对比来进行学习。 调试 本地调试 本地调试通常指调试使用的环境与调试的目标运行环境一致的调试方法&#xff0…

linux软件管理

软件管理 1、rpm管理工具 RPM是(Redhat Package Manager) 的缩写&#xff0c;由Red Hat公司提出的一种软件包管理标准 &#xff08;1&#xff09;rpm软件包的典型命名格式&#xff1a; 例&#xff1a;zsh-5.0.2-14.el8.x86_64.rpm zsh-50214el8x8664软件名主版本号次版本号…

day26_HTML

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 见代码 一、二阶段介绍 第一阶段: 基础入门 java基本语法编程基础(方法,数组)面向对象编程常用类高级(IO,线程,新…

新增 IEC61850、Profinet 驱动

2 月&#xff0c;Neuron 团队主要侧重于开发新的驱动&#xff0c;新增了南向 IEC61850 驱动、南向 Allen-Bradley DF1 驱动、Profinet 驱动支持以及静态点位等功能&#xff0c;这些新驱动和新功能将在 2.4 版本中正式发布。 IEC61850 驱动 IEC61850 标准是电力系统自动化领域…

网络基础(2)

目录1. 端口号2. 套接字socket3. 网络通信3.1 sockaddr与sockaddr_in3.2 接口服务端3.2.1 创建套接字&#xff0c;打开网络文件3.2.2 给该服务器绑定端口和ip&#xff08;特殊处理&#xff09;3.2.3 初始化相关服务器3.2.4 提供服务客户端3.2.5 绑定3.2.6 使用服务4. makefile实…

关于 JavaScript 中的 Promises

在 JavaScript 中&#xff0c;Promise 是一个对象&#xff0c;它表示一个可能还不可用&#xff0c;但会在未来解决的值。Promises 用于处理异步操作&#xff0c;例如发出网络请求或访问数据库&#xff0c;其中结果不是立即可用的。如果你准备好了&#xff0c;我想开始我们的冒险…

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

本文目录前言做项目的三大好处强强联手(天狗组合)专栏作者简介专栏的优势后端规划1. SpringBoot 和 SpringCloud 的选择2. Mybatis 和 MybatisPlus 和 JPA 的选择3. MySQL 和 Mongodb 的选择4. Redis 和 RocketMQ5. 后端规划小总结后端大纲提前掌握的知识点一期SpringBoot二期S…

EventLoop机制

JavaScript 是单线程的语言 JavaScript 是一门单线程执行的编程语言。也就是说&#xff0c;同一时间只能做一件事情。 单线程执行任务队列的问题&#xff1a; 如果前一个任务非常耗时&#xff0c;则后续的任务就不得不一直等待&#xff0c;从而导致程序假死的问题。 同步任…

机器学习和深度学习的综述

机器学习和深度学习的综述 1.1.1人工智能、机器学习、深度学习的关系 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是最宽泛的概念&#xff0c;是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。由于这个定义…

代码随想录算法训练营第二十一天打卡 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

打卡第21天&#xff0c;继续二叉树&#xff0c;前几天终于补完了&#xff0c;感觉难度上来了。 今日任务 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不…

计算机网络——路由、交换、子网篇

子网掩码 解释1 作者&#xff1a;纪言 链接&#xff1a;https://www.zhihu.com/question/56895036/answer/447915532 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 仅限ip4首先子网掩码这名字取得很好&#xff0c…

Java创建线程的方式只有一种:Thread+Runnable

Java创建线程的方式其实只有一种&#x1f468;‍&#x1f393;一、继承Thread&#x1f468;‍&#x1f393;二、实现Runnable接口&#x1f468;‍&#x1f393;三、实现Callable接口&#x1f468;‍&#x1f393;四、通过线程池创建&#x1f468;‍&#x1f393;五、总结一般我…

SOLID 原则要这么理解!

什么是 SOLID 原则 SOLID 原则其实是用来指导软件设计的&#xff0c;它一共分为五条设计原则&#xff0c;分别是&#xff1a; 单一职责原则&#xff08;SRP&#xff09;开闭原则&#xff08;OCP&#xff09;里氏替换原则&#xff08;LSP&#xff09;接口隔离原则&#xff08;…

Matter 系列 #9|乐鑫 Matter 预配置服务加速设备生产

乐鑫 Matter 系列文章 #9 目录 Matter 预配置服务 1. 设备认证 (Device Attestation) 2. 独特性 (Uniqueness) 3. 安全性 (Security) 联系我们​​​​​​​ 如今&#xff0c;物联网行业蓬勃发展&#xff0c;大量市场参与者正在积极地构建 Matter 智能设备。 乐鑫一直致…

盲盒开发:多元化设计、数字化销售、可持续发展

随着互联网的发展&#xff0c;盲盒成为了一种新型文化现象和玩具消费方式。它不仅满足了人们的消费需求&#xff0c;也引发了人们对玩具和收藏品的热爱和追求。目前&#xff0c;盲盒市场已经逐渐发展成为一个庞大的产业&#xff0c;其中海外盲盒市场更是异彩纷呈&#xff0c;备…