MybatisPlus

1.增删改查入门案例: 

首先导入依赖:

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

然后这些增删改查的方法就可以删掉了 (注意这里只能是单表查询,多表查询不适用)

Mapper层: 

 xml文件:

删完之后,在测试方法中找到提示词提示的方法进行填充就好了

比如这个查询方法

运行一下方法:

1.2:常用注解:

MybatisPlus 中比较常用的几个注解如下:

  • @TableName:用来指定表名
  • @TableId:用来指定表中的主键字段信息
  • @TableField:用来指定表中的普通字段信息

IdType 枚举:

  • AUTO:数据库自增长
  • INPUT:通过 set 方法自行输入
  • ASSIGN_ID:分配 ID,按 IdentifierGenerator 的方法 nextId 来生成 id,默认实现类为 DefaultIdentifierGenerator 雪花算法

使用 @TableField 的常见场景:

  • 成员变量名与数据库字段名不一致
  • 成员变量名以 is 开头,且是布尔值
  • 成员变量名与数据库关键字冲突
  • 成员变量不是数据库字段

代码示例:

@TableName("tb_user")
public class User {@TableId(value = "id", type = IdType.AUTO)private Long id;@TableField("username")private String name;@TableField("is_married")private Boolean isMarried;@TableField("order")private Integer order;@TableField(exist = false)private String address;
}

表结构信息:

名称数据类型注释默认值
idBIGINT用户 idAUTO_INCREMENT
usernameVARCHAR用户名无默认值
is_marriedBIT密码0
orderTINYINT序号NULL

2.条件构造器

QueryWrapper和UpdateWrapper的用法

这是原来的mybatis查询语句:

这是mybatis-plus的查询语句:

查询结果:

 

 查询结果:

问题:可是刚才的更新操作是把更新的值给写死了,碰到下面的问题那我们就要用一种新的方法

问题:上面的那些其实都是把字段写死的硬编码,我们就用到了lambdaQueryWeapper

3.自定义Sql

4.Service接口

service接口的继承关系

 

用Sevice就可以做到对数据库的操作,非常的厉害,他的底层就是去调了userMapper的接口

5.代码生成

在使用MybatisPlus以后,基础的MapperServicePO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成POMapperService等相关代码。只不过代码生成器同样要编码使用,也很麻烦。

这里推荐大家使用一款MybatisPlus的插件,它可以基于图形化界面完成MybatisPlus的代码生成,非常简单。

3.1.1.安装插件

Idea的plugins市场中搜索并安装MyBatisPlus插件:

3.1.2.使用

刚好数据库中还有一张address表尚未生成对应的实体和mapper等基础代码。我们利用插件生成一下。 首先需要配置数据库地址,在Idea顶部菜单中,找到other,选择Config Database

3.3.逻辑删除

对于一些比较重要的数据,我们往往会采用逻辑删除的方案,即:

  • 在表中添加一个字段标记数据是否被删除

  • 当删除数据时把标记置为true

  • 查询时过滤掉标记为true的数据

一旦采用了逻辑删除,所有的查询和删除逻辑都要跟着变化,非常麻烦。

为了解决这个问题,MybatisPlus就添加了对逻辑删除的支持。

注意,只有MybatisPlus生成的SQL语句才支持自动的逻辑删除,自定义SQL需要自己手动处理逻辑删除。

例如,我们给address表添加一个逻辑删除字段:

alter table address add deleted bit default b'0' null comment '逻辑删除';

然后给Address实体添加deleted字段:

 接下来,我们要在application.yml中配置逻辑删除字段:

mybatis-plus:global-config:db-config:logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

测试: 首先,我们执行一个删除操作:

@Test
void testDeleteByLogic() {// 删除方法与以前没有区别addressService.removeById(59L);
}

方法与普通删除一模一样,但是底层的SQL逻辑变了:

综上, 开启了逻辑删除功能以后,我们就可以像普通删除一样做CRUD,基本不用考虑代码逻辑问题。还是非常方便的。

注意: 逻辑删除本身也有自己的问题,比如:

  • 会导致数据库表垃圾数据越来越多,从而影响查询效率

  • SQL中全都需要对逻辑删除字段做判断,影响查询效率

因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。

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

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

相关文章

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 过滤器:实现请求的预处理与后处理

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、过滤器&…

服务器上通过ollama部署deepseek

2025年1月下旬&#xff0c;DeepSeek的R1模型发布后的一周内就火了&#xff0c;性能比肩OpenAI的o1模型&#xff0c;且训练成本仅为560万美元&#xff0c;成本远低于openAI&#xff0c;使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…

点云软件VeloView开发环境搭建与编译

官方编译说明 LidarView / LidarView-Superbuild GitLab 我的编译过程&#xff1a; 安装vs2019&#xff0c;windows sdk&#xff0c;qt5.14.2&#xff08;没安装到5.15.7&#xff09;&#xff0c;git&#xff0c;cmake3.31&#xff0c;python3.7.9&#xff0c;ninja下载放到…

【Git】创建,切换分支

理解分支 这里开始介绍Git的杀手级功能之一&#xff1a;分支。 分支就是科幻电影里的平行宇宙&#xff0c;当你正在电脑前努力学习C的时候&#xff0c;另一个你正在另一个平行宇宙里努力学习JAVA。 如果两个平行宇宙互不干扰&#xff0c;那对现在的你也没啥影响。不过&#…

FPGA 实验报告:四位全加器与三八译码器仿真实现

目录 安装Quartus软件 四位全加器 全加器、半加器 半加器&#xff1a; 全加器&#xff1a; 四位全加器电路图 创建项目 半加器 全加器 四位全加器 代码实现 半加器 全加器 四位全加器 三八译码器 创建项目 代码展示 modelsim仿真波形图 四位全加器 三八译码…

记录一次wifi版有人物联串口服务器调试经过

1、首先买了一个华为的wifi路由器&#xff0c;连接上以后&#xff0c;设置好网络名字和wifi密码 2、用网线连接串口服务器&#xff0c;通过192.168.1.1登录&#xff0c;进行配置 找到无线客户端配置&#xff0c;先在基本配置中打开5G配置&#xff0c;然后再去5.8G配置中设置 …

Vue3.5 企业级管理系统实战(八):Sidebar组件开发 2

本篇通过 Pinia 实现侧边栏&#xff08;Sidebar&#xff09;的展开收起功能&#xff0c;并通过 Pinia 实现展开状态的持久化。 1 安装 Pinia Persistedstate Pinia 是 Vue.js 的状态管理库&#xff0c;而 pinia-plugin-persistedstate 是一个针对 Pinia 的插件&#xff0c;它…

驱动 AI 边缘计算新时代!高性能 i.MX 95 应用平台引领未来

智慧浪潮崛起&#xff1a;AI与边缘计算的时代 正悄然深植于我们的日常生活之中&#xff0c;无论是火热的 ChatGPT 与 DeepSeek 语言模型&#xff0c;亦或是 Meta 智能眼镜&#xff0c;AI 技术已经无形地影响着我们的生活。这股变革浪潮并未停歇&#xff0c;而是进一步催生了更高…

vue3 vite项目安装eslint

npm install eslint -D 安装eslint库 npx eslint --init 初始化配置&#xff0c;按项目实际情况选 自动生成eslint.config.js&#xff0c;可以添加自定义rules 安装ESLint插件 此时打开vue文件就会标红有问题的位置 安装prettier npm install prettier eslint-config-pr…

【RocketMQ】二、架构与核心概念

文章目录 1、发布订阅模型2、角色3、工作流程4、RocketMQ的架构4.1 RocketMQ4.x版本4.2 RocketMQ5.0版本 1、发布订阅模型 几乎所有主流MQ产品&#xff0c;都是发布订阅模型&#xff08;Pub/Sub模型&#xff09;&#xff0c;是生产者和消费者进行基于主题Topic的消息传送 在这…

vue3 遇到babel问题(exports is not defined) 解决方案

由于我在引用ant-design-vue插件&#xff0c;于是产生了下图的问题。 1.问题分析 Babel 是一个 JavaScript 编译器&#xff0c;主要用于&#xff1a;将 ES6 代码转译为 ES5 代码&#xff0c;以兼容旧版浏览器。处理模块化语法&#xff08;如 import/export&#xff09;。 2.解…

【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗

硬件平台&#xff1a;STM32L431RCT6 RT-Thread版本&#xff1a;4.1.0 目录 一.新建工程 二.配置工程 ​编辑 三.移植pm驱动 四.配置cubeMX 五.修改驱动文件&#xff0c;干掉报错 六.增加用户低功耗逻辑 1.设置唤醒方式 2.设置睡眠时以及唤醒后动作 ​编辑 3.增加测试命…

数据结构篇——串(String)

一、引入 在计算机中的处理的数据内容大致可分为以整形、浮点型等的数值处理和字符、字符串等的非数值处理。 今天我们主要学习的就是字符串数据。本章主要围绕“串的定义、串的类型、串的结构及其运算”来进行串介绍与学习。 二、串的定义 2.1、串的基本定义 串&#xff08;s…

STM32F4 UDP组播通信:填一填ST官方HAL库的坑

先说写作本文的原因&#xff0c;由于开项目开发中需要用到UDP组播接收的功能&#xff0c;但是ST官方没有提供合适的参考&#xff0c;使用STM32CubeMX生成的代码也是不能直接使用的&#xff0c;而我在网上找了一大圈&#xff0c;也没有一个能够直接解决的方案&#xff0c;deepse…

考研数一非数竞赛复习之Stolz定理求解数列极限

在非数类大学生数学竞赛中&#xff0c;Stolz定理作为一种强大的工具&#xff0c;经常被用来解决和式数列极限的问题&#xff0c;也被誉为离散版的’洛必达’方法&#xff0c;它提供了一种简洁而有效的方法&#xff0c;使得原本复杂繁琐的极限计算过程变得直观明了。本文&#x…

MWC 2025 | 紫光展锐与中国联通联合发布5G eSIM 平板

2025 年 3 月 3 日至 6 日&#xff0c;在全球移动通信行业的年度盛会 —— 世界移动通信大会&#xff08;MWC 2025&#xff09;上&#xff0c;紫光展锐联合中国联通重磅发布了支持eSIM的5G平板VN300E。 该产品采用紫光展锐T9100高性能5G SoC芯片平台&#xff0c;内置8 TOPS算力…

MySQL进阶-关联查询优化

采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论&#xff1a;type 有All ,代表着全表扫描&#xff0c;效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】&#xff0…

大模型gpt结合drawio绘制流程图

draw下载地址 根据不同操作系统选择不同的安装 截图给gpt 并让他生成drawio格式的&#xff0c;选上推理 在本地将生成的内容保存为xml格式 使用drawio打开 保存的xml文件 只能说效果一般。

2025-03-08 学习记录--C/C++-C 语言 判断一个数是否是完全平方数

C 语言 判断一个数是否是完全平方数 使用 sqrt 函数计算平方根&#xff0c;然后判断平方根的整数部分是否与原数相等。 #include <stdio.h> #include <math.h>int isPerfectSquare(int num) {if (num < 0) {return 0; // 负数不是完全平方数}int sqrtNum (int)…

Java高频面试之集合-07

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;ArrayList 和 Vector 的区别是什么&#xff1f; ArrayList 与 Vector 的区别详解 ArrayList 和 Vector 都是 Java 中基于…