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

[快速入门] 使用 MybatisPlus 简化 CRUD 操作

文章总览:YuanDaiMa2048博客文章总览


[快速入门] 使用 MybatisPlus 简化 CRUD 操作

在这个文章中,将介绍如何使用 MybatisPlus 来简化常见的 CRUD(增删改查)操作。MybatisPlus 是 MyBatis 的增强工具,提供了许多便利的功能,让我们能够更轻松地与数据库交互。下面将一步步介绍如何使用 MybatisPlus 完成基本的增删改查操作。

(一) 基本使用

1. 引入 MybatisPlus 依赖

首先,需要在 Maven 或 Gradle 项目中引入 MybatisPlus 的依赖。可以使用 MybatisPlus 提供的 starter,它集成了 Mybatis 和 MybatisPlus 的所有功能,并实现了自动装配效果。你可以通过以下方式引入依赖:

<!--MybatisPlus-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>

2. 定义 Mapper 接口

接下来,需要定义 Mapper 接口来操作数据库。可以简单地继承 MybatisPlus 提供的 BaseMapper 接口,并指定实体类的类型。例如:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {}

这里的 User 是你的实体类,确保它与数据库中的表对应,并且包含了正确的字段和注解。

3. 使用方法进行 CRUD 操作

一旦我们定义了 Mapper 接口,我们就可以直接使用 MybatisPlus 提供的方法来进行 CRUD 操作。这些方法以 insertdeleteupdateselect 开头,非常直观和易于理解。以下是一些示例:

  • 插入数据:
User user = new User();
user.setName("John");
user.setAge(25);
user.setEmail("john@example.com");
userMapper.insert(user);
  • 删除数据:
userMapper.deleteById(1L); // 根据主键删除
  • 更新数据:
User user = userMapper.selectById(1L); // 根据主键查询
user.setAge(30);
userMapper.updateById(user);
  • 查询数据:
List<User> userList = userMapper.selectList(null); // 查询所有用户

以上是简单的示例,你可以根据实际需求调用不同的方法来完成各种操作。

(二) 使用注解完善实体类与数据库表的映射关系

在 MybatisPlus 中,通过注解可以更精确地指定实体类与数据库表之间的映射关系,包括表名、主键字段以及普通字段等信息。下面我们将介绍如何使用注解来完善这些映射关系。

1. @TableName 注解

@TableName 注解用于指定实体类对应的数据库表名,特别是在实体类名与数据库表名不一致时非常有用。示例如下:

import com.baomidou.mybatisplus.annotation.TableName;@TableName("user_info")
public class User {// 实体类的定义...
}

2. @TableId 注解

@TableId 注解用于指定实体类中作为主键的字段信息,可以指定主键类型以及主键生成策略。示例如下:

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;public class User {@TableId(type = IdType.AUTO)private Long userId;// 其他字段...
}

3. @TableField 注解

@TableField 注解用于指定实体类中的普通字段与数据库表中字段的映射关系,特别是在字段名与数据库字段名不一致或者需要特别处理的情况下使用。示例如下:

import com.baomidou.mybatisplus.annotation.TableField;public class User {@TableField(value = "user_name")private String name;@TableField(value = "is_vip")private Boolean vipUser;// 其他字段...
}

IdType 枚举

IdType 枚举用于指定主键生成策略,常见的有 AUTO、INPUT、ASSIGN_ID 等。示例如下:

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;public class User {@TableId(type = IdType.AUTO)private Long userId;// 其他字段...
}

以上是使用注解来完善实体类与数据库表的映射关系的示例。通过合理地使用这些注解,我们可以更灵活地操作数据库,提高开发效率。

(三) 常见配置

1. application.yaml
mybatis-plus:type-aliases-package: com.itheima.mp.domain.po # 别名扫描包mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,默认值configuration:map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射cache-enabled: false # 是否开启二级缓存global-config:db-config:id-type: assign_id # id为雪花算法生成update-strategy: not_null # 更新策略:只更新非空字段

结语

通过 MybatisPlus,我们可以大大简化 CRUD 操作的代码量,提高开发效率。希望本文能够帮助你更好地理解如何使用 MybatisPlus。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 动手学深度学习(pytorch)学习记录26-卷积神经网路(LeNet)[学习记录]
  • Python操作ES集群API(增删改查等)
  • 民生水暖工程背后的科技力量引领工程智能化转型
  • 使用FastJson2将对象转成JSON字符串时,小数转换出错
  • RedissonClient 分布式队列工具类
  • 智能客服的演变:从传统到向量数据库的新时代
  • [iBOT] Image BERT Pre-Training with Online Tokenizer
  • springboot高校实验室预约系统-计算机毕业设计源码58031
  • 无需温度修正,测值准确可靠 GEO ACxxxx型振弦式锚索测力计
  • 机器学习特征分析
  • macos安装ArgoCD
  • Docker 学习 Day 1
  • 鸿蒙开发(API 12 Beta6版)【通用属性协议】 网络篇
  • 十分钟学会Kubernetes(K8S) 部署SpringBoot3.0
  • Java语言程序设计基础篇_编程练习题**17.20 (二进制编辑器)
  • .pyc 想到的一些问题
  • [NodeJS] 关于Buffer
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2017年终总结、随想
  • Angular6错误 Service: No provider for Renderer2
  • css系列之关于字体的事
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Java面向对象及其三大特征
  • java取消线程实例
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • php中curl和soap方式请求服务超时问题
  • Promise面试题2实现异步串行执行
  • Vue2.x学习三:事件处理生命周期钩子
  • 百度小程序遇到的问题
  • 构造函数(constructor)与原型链(prototype)关系
  • 技术胖1-4季视频复习— (看视频笔记)
  • 码农张的Bug人生 - 初来乍到
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 双管齐下,VMware的容器新战略
  • Python 之网络式编程
  • ​马来语翻译中文去哪比较好?
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #AngularJS#$sce.trustAsResourceUrl
  • #前后端分离# 头条发布系统
  • #图像处理
  • (160)时序收敛--->(10)时序收敛十
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (搬运以学习)flask 上下文的实现
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (南京观海微电子)——示波器使用介绍
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .gitignore