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

MyBatisPlus入门介绍

目录

一、MyBatisPlus介绍

润物无声

效率至上

丰富功能

二、Spring集成MyBatisPlus

三、SpringBoot集成MyBatisPlus


一、MyBatisPlus介绍

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

官方网址:https://baomidou.com/

下面就是官网的三大小点的介绍了

润物无声

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

效率至上

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

丰富功能

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

以及一些其他的

苞米豆生态圈

  • MybatisX (opens new window)- 一款全免费且强大的 IDEA 插件,支持跳转,自动补全生成 SQL,代码生成。
  • Mybatis-Mate (opens new window)- 为 MyBatis-Plus 企业级模块,支持分库分表、数据审计、字段加密、数据绑定、数据权限、表结构自动生成 SQL 维护等高级特性。
  • Dynamic-Datasource (opens new window)- 基于 SpringBoot 的多数据源组件,功能强悍,支持 Seata 分布式事务。
  • Shuan (opens new window)- 基于 Pac4J-JWT 的 WEB 安全组件, 快速集成。
  • Kisso (opens new window)- 基于 Cookie 的单点登录组件。
  • Lock4j (opens new window)- 基于 SpringBoot 同时支持 RedisTemplate、Redission、Zookeeper 的分布式锁组件。
  • Kaptcha (opens new window)- 基于 SpringBoot 和 Google Kaptcha 的简单验证码组件,简单验证码就选它。
  • Aizuda 爱组搭 (opens new window)- 低代码开发平台组件库。

二、Spring集成MyBatisPlus

MyBatisPlus官方推荐在SpringBoot工程中使用,Spring工程也可以使用MyBatisPlus,首先我们在Spring中使用MyBatisPlus。
1. 在Mysql中准备数据:

DROP DATABASE IF EXISTS `school`;CREATE DATABASE `school`;USE `school`;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

创建Maven项目,引入依赖

<dependencies><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.4.2</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.9</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.3.9</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.9</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency></dependencies>

创建实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {private Integer id;private String name;private String email;private String gender;private Integer age;
}

创建Mapper接口。
使用MyBatis时,在编写Mapper接口后,需要手动编写CRUD方法,并需要在Mapper映射文件中手动编写每个方法对应的SQL语句。而在MyBatisPlus中,只需要创建Mapper接口并继承
BaseMapper,此时该接口获得常用增删改查功能,不需要自己手动编写Mapper配置文件

public interface StudentMapper extends
BaseMapper<Student> {
}

创建Spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 数据源 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="username" value="root"/><property name="password" value="666666"/><property name="url" value="jdbc:mysql:///school"/><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/></bean><!-- Mybatis-Plus提供SqlSessionFactory对象 --><bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/></bean><!-- 自动扫描所有mapper接口,将mapper接口生成代理注入spring --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"p:basePackage="com.example.mpdemo1.mapper"p:sqlSessionFactoryBeanName="sqlSessionFactory"/></beans>

测试Mapper方法

import com.example.mpdemo1.pojo.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class MpTest {@Autowiredprivate StudentMapper studentMapper;@Testpublic void testFindAll(){Student students = studentMapper.selectById(3);System.out.println(students);}
}

测试结果: 

OK,和数据库一模一样。

三、SpringBoot集成MyBatisPlus

接下来我们在SpringBoot项目中使用MyBatisPlus

创建SpringBoot项目,添加MyBatisPlus起步依赖

    <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

在SpringBoot配置文件中配置数据源

# 配置数据源
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///school?serverTimezone=UTCusername: rootpassword: 666666

 创建实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {private Integer id;private String name;private String email;private String gender;private Integer age;
}

创建Mapper接口。
同样使用MyBatisPlus时,在编写Mapper接口后,不需要手动编写CRUD方法,并不需要在Mapper映射文件中手动编写每个方法对应的SQL语句。因此MyBatisPlus中,只需要创建Mapper接口并继承BaseMapper,此时该接口获得常用增删改查功能,不需要自己手动编写Mapper配置文件

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mpdemo2.pojo.Student;public interface StudentMapper extends BaseMapper<Student> {
}

在 SpringBoot启动类中添加  @MapperScan 注解,扫描Mapper文件夹

@MapperScan("com.example.mpdemo2.mapper")

测试Mapper方法

@SpringBootTest
class Mpdemo2ApplicationTests {@Autowiredprivate StudentMapper studentMapper;@Testpublic void testFind() {Student student = studentMapper.selectById(1);System.out.println(student);}
}

看运行结果已经非常明了。 

相关文章:

MyBatisPlus入门介绍

目录 一、MyBatisPlus介绍 润物无声 效率至上 丰富功能 二、Spring集成MyBatisPlus 三、SpringBoot集成MyBatisPlus 一、MyBatisPlus介绍 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强不做改变&#xff0c…...

详解分布式微服务架构

目录 一、微服务简介 1、分布式微服务架的诞生 2、微服务架构与SOA架构的区别 3、微服务框架引来的问题 二、服务通信 RESTful API&#xff1a; 消息队列&#xff08;如RabbitMQ、Kafka&#xff09;&#xff1a; gRPC&#xff1a; GraphQL&#xff1a; Service Mesh&…...

Navicat 技术指引 | 适用于 GaussDB 的用户权限设置

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…...

究极短的快排代码【QuickSort】

快排 QuickSort 两边向中间扫描法&#xff1a;取一个基点值&#xff0c;从左往右扫描&#xff0c;基点值左边所有元素小于它&#xff0c;遇到大于基点值的则停下&#xff0c;开始从右往左扫描&#xff0c;右边所有元素大于他&#xff0c;遇到小于基点值则停下&#xff0c;如果…...

MUYUCMS v2.1:一款开源、轻量级的内容管理系统

MuYuCMS&#xff1a;一款基于Thinkphp开发的轻量级开源内容管理系统&#xff0c;为企业、个人站长提供快速建站解决方案。它具有以下的环境要求&#xff1a; 支持系统&#xff1a;Windows/Linux/Mac WEB服务器&#xff1a;Apache/Nginx/ISS PHP版本&#xff1a;php > 5.6 (…...

⑩【Redis Java客户端】:Jedis、SpringDataRedis、StringRedisTemplate

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Jedis、SpringDataRedis、StringRedisTemplate…...

什么是自动化测试po模式,po分层如何实现?

一、什么是PO模式 全称&#xff1a;page object model 简称&#xff1a;POM/PO PO模式最核心的思想是分层&#xff0c;实现松耦合&#xff01;实现脚本重复使用&#xff0c;实现脚本易维护性&#xff01; 主要分三层&#xff1a; 1.基础层BasePage&#xff1a;封装一些最基…...

Redis-缓存高可用集群

Redis集群方案比较 哨兵模式 性能和高可用性等各方面表现一般&#xff0c;特别是在主从切换的瞬间存在访问瞬断的情况。另外哨兵模式只有一个主节点对外提供服务&#xff0c;没法支持很高的并发&#xff0c;且单个主节点内存也不宜设置得过大&#xff0c;否则会导致持久化文件过…...

Docker的入门

Docker的入门 防火墙Docker的命令镜像相关的命令运行容器容器相关的命令 Docker作为一个软件集装箱化平台&#xff0c;可以让开发者构建应用程序时&#xff0c;将它与其依赖环境一起打包到一个容器中&#xff0c;然后很容易地发布和应用到任意平台中。 docker有3大核心&#xf…...

AJAX技术-04-- 跨域说明

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1 同源策略同源策略介绍规定要求 请求协议://域名:端口号 关于同源策略练习关于同源策略总结 2.JSONPJSONP原理说明关于JSONP优化 3.CORS介绍介绍不允许跨域说明跨域…...

蓝桥杯每日一题2023.11.23

题目描述 题目分析 本题使用递归模拟即可&#xff0c;将每一个大格子都可以拆分看成几个小格子&#xff0c;先将最开始的数字进行填入&#xff0c;使每一个对应小格子的值都为大格子对应的数&#xff0c;搜索找到符合要求的即可 &#xff08;答案&#xff1a;50 33 30 41&am…...

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回

20231124给RK3399的挖掘机开发板在Andorid10下加鼠标右键返回 2023/11/24 12:19 百度&#xff1a;RK3399 Android10 右键返回 https://blog.csdn.net/danhu/article/details/122467256 android9/android10 鼠标右键返回(已验证) danhu 于 2022-01-13 09:46:42 发布 android10 …...

云计算实验如何结合AI来提高效率!

随着AI助手的流行&#xff0c;我们现在无论是学习还是工作都会带着一个他/她&#xff0c;如何让AI助手提高我们的工作效率是我们需要进化的方向。下面结合“云计算实验”来分享一下如何让AI帮助我们学得更快学得更好。 一、学习某个软件或复杂命令 比如在学习RockyLinux9.2中…...

前端路由hash和history的六大区别

前端路由hash和history的区别 前言谁的URL有#回车刷新时hash和history变化 谁支持低版本浏览器hash不会重新加载页面谁有历史记录谁需要后台配置hash缺点 前言 本文主要讲解hash和history路由的区别&#xff0c;那么好本文正式开始。 谁的URL有# 路由Hash的地址上有#,而hist…...

解决多选删除页面不同步问题

多选删除一般有两种情况&#xff1a; 1&#xff0c;删除接口支持传多个id&#xff0c;这是最理想的方法&#xff0c;建议大家积极与后端进行沟通解决。之后只需要判断接口回调刷新页面即可&#xff01; 2&#xff0c;删除接口不支持传多个id&#xff0c;这就是接下来我们要处…...

QQ空间上传一次 500张限制突破记录

手机又好多照片了&#xff0c;用手机上传耽误时间&#xff0c;就导出到电脑了&#xff0c;上传到qq空间去。 结果发现不开通黄钻无法上传原图&#xff0c;那就开通吧&#xff01; 开通了黄钻&#xff0c;居然不能一次上传超过 500 张&#xff0c;开通有何用&#xff1f; 五千…...

springboot3.x+springsecurity6.x多种方式登录验证

最新的 Spring Security 5.7 及以上版本&#xff0c;更新了不少内容&#xff0c;之前的 WebSecurityConfigurerAdapter 已经被废弃了&#xff0c;而且&#xff0c;要同时实现用户名密码登录、手机验证码登录、邮箱、微信小程序等登录方式&#xff0c;跟之前的配置方式都会有所不…...

【数据结构实验】图(二)将邻接矩阵存储转换为邻接表存储

文章目录 1. 引言2. 邻接表表示图的原理2.0 图的基础知识a. 类型b. 表示 2.1 有向权图2.2 无向权图2.3 无向非权图2.4 有向非权图 3. 实验内容3.1 实验题目&#xff08;一&#xff09;数据结构要求&#xff08;二&#xff09;输入要求&#xff08;三&#xff09;输出要求 3.2 算…...

【LeetCode】挑战100天 Day15(热题+面试经典150题)

【LeetCode】挑战100天 Day15&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-172.1 题目2.2 题解 三、面试经典 150 题-173.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…...

面试:RabbitMQ相关问题

文章目录 简单介绍RabbitMQRabbitMQ架构什么是 RabbitMQ&#xff1f;有什么显著的特点&#xff1f;RabbitMQ 有那些基本概念&#xff1f;RabbitMQ routing 路由模式消息怎么路由&#xff1f;RabbitMQ publish/subscribe 发布订阅(共享资源)能够在地理上分开的不同数据中心使用 …...

雀魂Mod Plus:免费解锁全角色皮肤的终极指南

雀魂Mod Plus&#xff1a;免费解锁全角色皮肤的终极指南 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等&#xff0c;支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 还在为无法获得心仪的雀魂角色而烦恼吗&#xff…...

Git冷命令

Git冷命令拯救崩溃现场的技术文章大纲背景与痛点开发中常见的Git崩溃场景&#xff08;如误删分支、强制推送覆盖代码、变基冲突等&#xff09;常规解决方案的局限性&#xff08;如git reflog无法覆盖所有情况&#xff09;核心冷门命令解析git fsck --lost-found恢复悬空对象&am…...

别再死记硬背了!用Multisim仿真5分钟搞懂变压器同名端判断(附实验文件)

5分钟玩转Multisim&#xff1a;用仿真实验破解变压器同名端判断难题 刚接触变压器同名端概念时&#xff0c;你是否也被那些抽象的"正负相位"、"耦合极性"搞得晕头转向&#xff1f;传统教材里密密麻麻的公式推导和文字描述&#xff0c;总让人感觉隔着一层迷…...

终极指南:3步让普通鼠标在macOS上超越苹果触控板体验

终极指南&#xff1a;3步让普通鼠标在macOS上超越苹果触控板体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款革命性的开…...

深入Armv8.1-M内核:在BK7259上玩转Cortex-M52的TrustZone和Helium加速实战

深入Armv8.1-M内核&#xff1a;在BK7259上玩转Cortex-M52的TrustZone和Helium加速实战 BK7259这颗高度集成的WiFi6/蓝牙双模SoC&#xff0c;凭借双Armv8.1-M Cortex-M52内核的独特架构&#xff0c;正在智能家居、工业控制等领域掀起新一轮的技术革新。作为开发者&#xff0c;我…...

实测对比:EfficientNet-lite4在树莓派4B与Jetson Nano上的推理性能到底差多少?

EfficientNet-lite4边缘计算实战&#xff1a;树莓派4B与Jetson Nano推理性能深度对比 当你在树莓派上跑通第一个图像分类模型时&#xff0c;那种成就感就像在乐高积木上搭建出微型超级计算机。但当你发现实际部署需要兼顾速度、精度和功耗时&#xff0c;问题就变得复杂起来——…...

雀魂Mod Plus:全面解锁游戏角色与装扮的技术实现方案

雀魂Mod Plus&#xff1a;全面解锁游戏角色与装扮的技术实现方案 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等&#xff0c;支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 你是否曾经在雀魂游戏中渴望拥有更多角色…...

雷达工程师的‘防坑’指南:脉间PRI抖动与频率捷变,在实战仿真中如何避免误判?

雷达工程师的‘防坑’指南&#xff1a;脉间PRI抖动与频率捷变实战仿真避坑策略 雷达信号处理工程师在日常工作中最头疼的莫过于面对复杂的脉间调制信号时&#xff0c;那些看似微小的参数设置差异导致的系统性误判。记得去年参与某型电子对抗系统联调时&#xff0c;团队花了整整…...

Cosmos-Reason1-7B辅助学术图表绘制:从数据到Mathtype公式与解读

Cosmos-Reason1-7B辅助学术图表绘制&#xff1a;从数据到Mathtype公式与解读 1. 引言 做科研的朋友们&#xff0c;不知道你们有没有经历过这样的时刻&#xff1a;辛辛苦苦做完实验&#xff0c;整理出一堆数据&#xff0c;然后对着Excel或者Origin软件开始犯愁——这堆数字&am…...

从Dify到Neo4j:一份给开发者的Docker容器间通信避坑指南(附Linux配置)

从Dify到Neo4j&#xff1a;一份给开发者的Docker容器间通信避坑指南&#xff08;附Linux配置&#xff09; 在微服务架构盛行的今天&#xff0c;Docker已成为开发者部署多服务应用的标配工具。但当你在本地开发环境或生产服务器上同时运行Dify和Neo4j时&#xff0c;可能会遇到一…...