MyBatisPlus(1):快速入门

news2025/7/25 21:16:00

我们知道,MyBatis是一个优秀的操作数据库的持久层框架(优秀持久层框架——MyBatis),其基于底层的JDBC进行高度封装,极大的简化了开发。但是对于单表操作而言,我们需要重复地编写简单的CRUD语句。这其实是不必要的,为此,MyBatisPlus框架在MyBatis框架的基础上进一步封装,提供了大量操作单表CRUD的方法,进一步的提高了我们的开发效率。

MyBatisPlus框架简介

MyBatisPlus和MyBatis的关系

顾名思义,MyBatisPlusMyBatis的后面添加了plus,从词义上来看应该是MyBatis的升级版;事实也如此,MyBatisPlus框架完全支持MyBatis框架的用法(我们在引入了MyBatisPlus框架的依赖之后就不需要再引入MyBatis框架的依赖了)。那是不是意味着MyBatisPlus将要取代MyBatis了?完全不是这样:在MyBatisPlus的官网上,开发者是用这样的图来描述二者的关系的:

TO BE THE BEST PARTNER OF MYBATIS(成为MyBatis最好的伙伴),这是开发者的原话。MyBatisMyBatisPlus二者就好像魂斗罗的两兄弟一样,共同为简化我们的开发而努力。MyBatisPlus框架绝对不是为了取代MyBatis框架出现的,并且MyBatisPlus框架目前也没有能力完全取代MyBatis框架。

MyBatisPlus框架的特点

润物无声

MyBatisPlus框架只做增强而不做改变,因为引入它不会对现有的工程产生影响,如丝般顺滑。

效率至上

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

丰富功能

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

广泛认可

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

这么介绍MyBatisPlus框架也许不够直观,那让我们使用一个快速入门的DEMO来直观展示MyBatisPlus框架是如何简化我们的开发的。

MyBatisPlus框架入门案例

在项目中使用MyBatisPlus框架一共可分为3步。

引入依赖

想要使用一个框架,我们肯定需要引入对应的依赖,以下是MyBatisPlus框架的最新依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.12</version>
</dependency>

因为上文提到了MyBatisPlus框架完全支持MyBatis框架的用法,所以说我们在引入了MyBatisPlus框架依赖之后,如果想要使用MyBatis框架,无需额外的引入,即可使用。

自定义Mapper继承BaseMapper接口

MyBatisPlus框架提供了很多的方法来简化我们的单表CRUD操作这些方法被封装在了一个名为BaseMapper<>的接口中,想要使用这些方法,我们就需要创建一个接口来继承这个接口,注意,在继承时,需要指明BaseMapper<>中的泛型:

EMP实体类:

package com.wzb.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Integer gender;
    private String phone;
    private String image;
    private Integer job;
    private LocalDate entryDate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

自定义Mapper继承BaseMapper接口:

package com.wzb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzb.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface EmpMapper extends BaseMapper<Emp> {
}

需要注意,在使用自定义Mapper继承BaseMapper接口的时候,需要指明BaseMapper的泛型。

使用对应方法

此时我们就可以使用BaseMapper中封装好的方法来简化单表查询了:

package com.wzb;

import com.wzb.mapper.EmpMapper;
import com.wzb.pojo.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.time.LocalDate;
import java.time.LocalDateTime;

@SpringBootTest
class JavaWeb13MyBatisPlusApplicationTests {

    @Autowired
    private EmpMapper empMapper;

    /**
     * 查询测试
     */
    @Test
    public void queryTest() {
        Emp emp = empMapper.selectById(1);
        System.out.println(emp);
    }

    /**
     * 增加测试
     */
    @Test
    public void insertTest() {
        Emp emp = new Emp();
        emp.setId(100);
        emp.setUsername("测试员工");
        emp.setPassword("123456");
        emp.setName("测试员工");
        emp.setGender(0);
        emp.setPhone("1310000001");
        emp.setImage("https://123.com");
        emp.setJob(1);
        emp.setEntryDate(LocalDate.now());
        emp.setDeptId(1);
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    }

    /**
     * 删除测试
     */
    @Test
    public void deleteTest() {
        empMapper.deleteById("100");
    }

    /**
     * 修改测试
     */
    @Test
    public void updateTest() {
        Emp emp = new Emp();
        emp.setId(1);
        emp.setUsername("张三");
        empMapper.updateById(emp);
    }

}

这是一个简单的CRUD示例,包含了对于EmpCRUD,但是我们的EmpMapper中是没有任何代码的,仅仅只是继承了BaseMapper的接口,这几个方法分别使用了BaseMapper接口中的selectByIdinsertdeleteByIdupdateById方法,这些方法都是十分简单的CRUD方法,编码及其规范,都可以见名知意,看到方法名就知道是干什么的,需要给方法传递什么参数。

总结

MyBatisPlus框架在MyBatis框架的基础上进一步封装,提供了大量操作单表CRUD的方法,进一步的提高了我们的开发效率。MyBatisPlus框架的快速入门极其简单,但是MyBatis主要聚焦于单表查询的简化,对于简单的CRUD的SQL语句,开发者无需手写,直接使用封装方法即可,但是对于复杂的多表联查的SQL语句,还是需要开发者自己编写SQL语句完成。所以说MyBatisPlus框架和MyBatis框架都是需要我们掌握的,MyBatisPlus框架并不能直接代替MyBatis框架。

在这个快速入门的Demo中,我们使用了BaseMapper中封装的方法来简化查询,那MyBatisPlus框架是如何知道这些方法需要操作数据库中的哪一张表呢?且听下文分解。

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

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

相关文章

京东热点缓存探测系统JDhotkey架构剖析

热点探测使用场景 MySQL 中被频繁访问的数据 &#xff0c;如热门商品的主键 IdRedis 缓存中被密集访问的 Key&#xff0c;如热门商品的详情需要 get goods$Id恶意攻击或机器人爬虫的请求信息&#xff0c;如特定标识的 userId、机器 IP频繁被访问的接口地址&#xff0c;如获取用…

【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM&#xff08;Index Lifecycle Management&#xff09;策略详解 1.什么是 ILM 策略&#xff1f;2.ILM 解决的核心业务问题3.ILM 生命周期阶段3.1 Hot&#xff08;热阶段&#xff09;3.2 Warm&#xff08;温阶段&#xff09;3.3 Cold&#xff08;冷阶段&#xff09;3.4 Delete…

linux 后记

Linux Server 下载一个Server的版本&#xff0c;就是那种只有命令行的 学会这个就可以去租一个aliyun服务器&#xff0c;挺便宜的 如果在aliyun买服务器的话就不用管镜像源 但是如果是自己的虚拟机就必须设置镜像源&#xff0c;上网搜索阿里的镜像源&#xff0c;然后手动输入&…

【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)

&#x1f4dd; 在 MSYS2 MINGW64 环境中安装构建工具链&#xff08;CMake、GCC、Make&#xff09; ✅ 目标说明 记录在 MSYS2 的 MINGW64 工具链环境中&#xff0c;成功安装用于 C/C 构建的常用开发工具。 包括&#xff1a; GCC 编译器Make 构建系统CMake 跨平台构建工具基础开…

PyTorch -TensorBoard的使用 (一)

设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs&#xff0c;出现这种情况怎么解决 所有的logs文件删掉delete&#xff0c;重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 &#xff08;500&#xff0c;375&am…

Redis最佳实践——性能优化技巧之数据结构选择

Redis在电商应用中的数据结构选择与性能优化技巧 一、电商核心场景与数据结构选型矩阵 应用场景推荐数据结构内存占用读写复杂度典型操作商品详情缓存Hash低O(1)HGETALL, HMSET购物车管理Hash中O(1)HINCRBY, HDEL用户会话管理Hash低O(1)HSETEX, HGET商品分类目录Sorted Set高O…

网络安全方向在校生有哪些证书适合考取?

工作7年得出结论&#xff1a;网络安全&#xff0c;考任何证书都没有用&#xff0c;实力才是根本。我是2021年考的 CISSP&#xff0c;报了培训班&#xff0c;花了1万一千块钱&#xff0c;签的保障班还是服务班不记得了&#xff0c;大概意思就是你放心去考&#xff0c;考不过可以…

从0开始学习R语言--Day14--贝叶斯统计与结构方程模型

贝叶斯统计 在很多时候&#xff0c;我们经常会看到在统计分析中出现很多反直觉的结论&#xff0c;比如假如有一种病&#xff0c;人群中的患病率为1%&#xff0c;患者真患病时&#xff0c;检测结果为阳性的概率是99%&#xff0c;如果没有&#xff0c;则检测结果为阳性的概率是5…

[Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译

在实际项目中,自动化工作流服务可以大大简化复杂任务的处理流程。本文将介绍如何通过 Python 脚本调用 Dify 提供的工作流 API,实现文本翻译的自动化操作。该流程包括设置 API 接口、构造请求体并处理返回结果。 一、背景介绍:什么是 Dify 工作流服务? Dify 是一款支持多种…

PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。

目录 1.问题描述 2.函数接口定义&#xff1a; 3.裁判测试程序样例&#xff1a; 4.输入和输出样例 输入样例&#xff1a; 输出样例&#xff1a; 5.实现代码 1.问题描述 Main类&#xff1a;在main方法中&#xff0c;调用constructWorkerList方法构建一个Worker对象链表…

微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载

本次和大家分享另一个微软发布的非常热门的文件文档转Markdown格式文档的软件markitdown&#xff0c;软件可以将PDF&#xff0c;word&#xff0c;ppt&#xff0c;Excel等十几种格式文档转换为markdown格式文档&#xff0c;我基于当前最新0.1.2版本制作了免安装一键启动整合包。…

BayesFlow:基于神经网络的摊销贝叶斯推断框架

贝叶斯推断为不确定性条件下的推理、复杂系统建模以及基于观测数据的预测提供了严谨且功能强大的理论框架。尽管贝叶斯建模在理论上具有优雅性&#xff0c;但在实际应用中经常面临显著的计算挑战&#xff1a;后验分布通常缺乏解析解&#xff0c;模型验证和比较需要进行重复的推…

基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试

目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试。输入待加密数据&#xff0c;密钥&#xff0c;输出加密数据&#xff0c;然后通过解密模块输出解密后的原…

Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)

一、《用于精确目标检测和语义分割的丰富特征层次结构》 1.1、基本信息 原文标题&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 中文译名&#xff1a;用于精确目标检测与语义分割的丰富特征层次结构 版本&#xff1a;第5版技…

极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道

5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源&#xff08;UPS&#xff09;等设备中&#xff0c;蓄电池作为关键的储能单元&#xff0c;其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况&#xff0c;是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…

TortoiseSVN账号切换

SVN登录配置及账号切换 本文主要为了解答svn客户端如何进行账号登录及切换不同权限账号的方式。 一、环境准备与客户端安装 安装TortoiseSVN客户端 ​​下载地址​​&#xff1a;TortoiseSVN官网 ​​安装步骤​​&#xff1a; 双击安装包&#xff0c;按向导完成安装后&#x…

2025年05月28日Github流行趋势

项目名称&#xff1a;agenticSeek 项目地址url&#xff1a;https://github.com/Fosowl/agenticSeek项目语言&#xff1a;Python历史star数&#xff1a;10352今日star数&#xff1a;2444项目维护者&#xff1a;Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

篇章五 数据结构——链表(一)

目录 1.ArrayList的缺陷 2. 链表 2.1 链表的概念及结构 2.2 链表结构 1. 单向或者双向 2.带头或者不带头 3.循环或者非循环 2.3 链表的实现 1.完整代码 2.图解 3.显示方法 4.链表大小 5. 链表是否存在 key 值 6.头插法 7.尾插法 8.中间插入 9.删除key值节点 10.…

一文清晰理解目标检测指标计算

一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比&#xff0c;取值范围为[0,1] 设预测边界框为&#xff0c;真实边界框为 公式&#xff1a; IoU计算为两个边界框交集面积与并集面积之比&#xff0c;图示如下 IoU值越高&#xff0c;表示预测边界框与真实边界框的对…