MyBatis-Plus 基础操作指南:实现高效的增删改查

引言

    大家好,今天我们来聊聊如何使用 MyBatis-Plus(接下来简称为 MP),一个流行的 MyBatis 增强工具,来简化和加速我们的数据库操作。如果你是一位初学者,不用担心,我将带你从头到尾详细了解 MP 的使用方法,特别是如何实现基本的增删改查操作。

为什么选择 MyBatis-Plus?

    在开始详细介绍之前,我们有必要快速了解一下,为什么 MP 如此受欢迎。MP 在保留了原生 MyBatis 操作数据库的灵活性的同时,通过内置的 CRUD 方法大大减少了重复代码的编写,提高开发效率。

准备工作

    用 MP 前,确保你的项目中包含了 MP 的依赖。以 Maven 项目为例,需要在 pom.xml 中添加以下依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>您的具体版本号</version>
</dependency>

实体和 Mapper

   接下来,假设我们的数据库中有一个 user 表,用于存储用户信息。让我们首先来创建一个对应的实体类 User

import com.baomidou.mybatisplus.annotation.TableName;@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user") // 指定表名
public class User {private Long id;private String name;private Integer age;private String email;
}

    之后,我们创建一个与之对应的 UserMapper 接口:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {// 这里可以添加一些你自己的自定义方法。
}

    你看,只要接口继承了 BaseMapper, 它就自动获得了许多内置的基础 CRUD 操作方法。

实现增删改查

    下面,我们来逐一看看如何实现各项数据库操作。

增加(Insert)

    添加一个新的用户到数据库:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public void addUser() {User user = new User(null, "张三", 28, "zhangsan@example.com");int result = userMapper.insert(user);if (result > 0) {System.out.println("插入成功,用户ID:" + user.getId());}}
}

    在这个例子中,insert 方法会自动处理插入逻辑,并且,如果你的主键是自增类型的,insert 还会把生成的主键值回填到实体类的对应字段中。

查询(Select)

    可能你需要根据用户ID查询用户,或者要查询所有名叫 “张三” 的用户:

public User getUserById(Long id) {return userMapper.selectById(id); // 根据ID查询用户
}public List<User> getUsersByName(String name) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", name);return userMapper.selectList(queryWrapper); // 查询所有名叫 "张三" 的用户
}

    这里,selectById 方法很直接,传入主键即可获取数据。selectList 方法配合 QueryWrapper 可以实现复杂的查询逻辑。

更新(Update)

     如果您想更新用户的邮箱地址,可以这么做:

public void updateUserEmail(Long id, String newEmail) {User user = new User();user.setId(id);user.setEmail(newEmail);int result = userMapper.updateById(user); // 根据ID更新用户if (result > 0) {System.out.println("更新成功!");}
}

在这里,updateById 将仅更新实体类 User 中非空的字段。

删除(Delete)

删除用户同样简单:

public void deleteUserById(Long id) {int result = userMapper.deleteById(id); // 根据ID删除用户if (result > 0) {System.out.println("删除成功!");}
}

在这个例子中,deleteById 方法允许你通过主键快速删除数据记录。

结语

    通过这个初学者指南,我们学习了如何利用 MP 迅速实现增删改查的数据库操作。MP 通过减少样板代码,让开发更加简洁直观,显著提升开发速度和工作享受。

    正如你所看到的,MP 不仅使得数据库操作变得异常简单,而且还支持许多先进特性,例如分页查询、乐观锁等,帮助开发者轻松应对更复杂的业务场景。

    希望本文能帮助你快速上手 MyBatis-Plus,欢迎在开发实践中进一步探索和深化你对 MP 功能的理解和应用!

(友情提醒:上文中所用到的操作,需要结合你的实际开发环境,以及 MP 的最新版本特性来调整使用。)

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

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

相关文章

华为数通---BFD多跳检测示例

定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种全网统一的检测机制&#xff0c;用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网络设备需要…

leetcode707.设计链表

题目描述 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则还需要属性 prev 以指示链表中的…

时间序列预测 — GRU实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 数据集简介 1.2 导入库文件 1.3 数据集处理 1.4 训练数据构造 2 模型训练与预测 2.1 模型训练 2.2 模型多步预测 2.3 预测可视化 1 数据处理 1.1 数据集简介 实验数据集采用数据集7&#xff1a;常州普利司通光伏数据集&#xff08;下载链接&…

安全众测-内网渗透常用的工具和命令

最近参加企业内部的众测&#xff0c;我是一名新手&#xff0c;所以先学习使用工具扫描的方法。如下是我的一些经验。 记住&#xff1a;渗透测试的本质是信息收集&#xff0c;信息越多&#xff0c;出现漏洞的可能性就越大&#xff0c;一直到收集到所有资产为止。 网站的robots.…

ChatGPT对于当今的社会或科技发展有何重要性?

ChatGPT对于当今社会和科技发展的重要性在于&#xff1a; 促进社交交流&#xff1a;ChatGPT可以为人们提供全天候的在线聊天服务&#xff0c;连接人与人之间的沟通交流&#xff0c;改善社交沟通方式。 提高有效性和效率&#xff1a;人们可以通过ChatGPT获得快速和精确的信息&a…

LV.12 D23 IIC控制器与MPU6050 学习笔记

一、Exynos_4412下的IIC控制器 ​ 4412有四个IIC&#xff0c;如果要使用需要配置四个寄存器 I2CCON&#xff1a;配置一些功能 I2CSTAT&#xff1a;控制一些功能、显示一些状态 I2CDS&#xff1a;发送和接收数据 I2CADD&#xff1a;当4412作为从机时需要一个地址&#xff…

minio的k8s的单机部署

minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…

Centos服务器上根据端口号查询jar包,根据jar包查端口号

在开发springboot服务器时&#xff0c;经常会遇到其他人部署的java服务&#xff0c;需要自己维护&#xff0c;留下的信息又非常少。经常面临找不到jar包位置&#xff0c;或者不知道占用端口&#xff0c;不知道启动命令的问题。这里记录一下常用的centos服务器上的命令&#xff…

python数据可视化工具 ----matplotlib

python数据可视化工具 ----matplotlib 一、安装matplotlib模块二、设置绘图风格三、画布四、折线图五、垂直柱状图六、水平柱状图七、饼状图八、散点图九、设置x,y轴坐标标题十、添加注释文字十一、设置标题十二、添加图例十三、绘制多子图十四、多个子图添加总标题十五、修改…

ROS参数服务器——参数操作(C++)

目录 一、参数服务器的新增、修改参数 1、API 2、代码 二、参数服务器获取参数 1、API 2、代码 三、参数服务器删除参数 1、API 2、代码 一、参数服务器的新增、修改参数 1、API 在 roscpp 中提供了两套 API 实现参数操作ros::NodeHandlesetParam("键",值…

联通宽带+老毛子Padavan固件 开启IP v6

联通宽带开启IP v6 参考&#xff1a; 联通宽带开启 IPV6 的方法_联通ipv6怎么开通-CSDN博客 个人宽带如何开启IPv6网络访问 - 知乎 (zhihu.com) 首先&#xff0c;你要确定当前你所在的地区运营商已经开通了IPV6&#xff0c;可以使用手机流量 IP查询(ipw.cn) | IPv6测试 | IPv…

Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能

Altair推出 Altair RapidMiner 2023 平台&#xff0c;提供生成式 AI 功能 更新包括自动聚类、扩展 SAS、Python 和 R 编程功能等 近日&#xff0c;Altair&#xff08;纳斯达克股票代码&#xff1a;ALTR&#xff09;近日宣布其数据分析和 AI 平台 Altair RapidMiner 取得了一系…

ACM32F403/F433 12 位多通道,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…

限流算法,基于go的gRPC 实现的

目录 一、单机限流 1、令牌桶算法 3、固定窗口限流算法 4、滑动窗口 二、集群限流 1、分布式固定窗口 &#xff08;基于redis&#xff09; 2、分布式滑动窗口 一、单机限流 1、令牌桶算法 令牌桶算法是当流量进入系统前需要获取令牌&#xff0c;没有令牌那么就要进行限…

Kafka使用指南

Kafka简介架构设计Kafka的架构设计关键概念Kafka的架构设计关键机制 Partition介绍Partition工作机制 应用场景ACK机制介绍ACK机制原理ACK机制对性能的影响ACK控制粒度Kafka分区数对集群性能影响调整分区优化集群性能拓展Kafka数据全局有序 Kafka简介 Kafka是由Apache软件基金…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(二)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

基于epoll实现Reactor服务器

了解epoll底层逻辑 在我们调用epoll_create的时候会创建出epoll模型&#xff0c;这个模型也是利用文件描述类似文件系统的方式控制该结构。 在我们调用epoll_create的时候&#xff0c;就会在内核管理中创建一个epoll模型&#xff0c;并且建管理模块地址给file结构体&#xff…

HNU-计算机网络-实验2-网络基础编程实验(Python3)

计算机网络 课程基础实验二 网络基础编程实验(Python3) 计科210X 甘晴void 202108010XXX 一、实验目的 ​ 通过本实验&#xff0c;学习采用Socket&#xff08;套接字&#xff09;设计简单的网络数据收发程序&#xff0c;理解应用数据包是如何通过传输层进行传送的。 二、实验…

Redis默认序列化方式乱码原因及解决办法

Redis默认序列化方式乱码原因及解决办法 乱码原因 使用自定义序列化器 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.…

Linux常见问题-获取日志方法总结(Ubuntu/Debian)

1 日志基本路径和基础查看方法 在 Ubuntu 或 Debian 11 系统中&#xff0c;可以通过不同的日志文件来获取系统日志和内核日志。日志常见路径如下&#xff1a; /var/log/syslog&#xff1a;包含系统的整体日志&#xff0c;包括各种系统事件和服务日志。/var/log/auth.log&…