MyBatisPlus-注解的使用

news2025/1/13 8:10:07

注解 | MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/pages/223848/#idtype因为在MyBatisPlus中都是通过实体类映射到数据库的字段中,所以处理好实体类与数据库表中字段的映射关系就很重要,MyBatisPlus提供的注解可以解决数据库中表名、字段名和代码中表名、字段不对应的情况

@TableName

实体映射到表名,后面括号直接写数据库中的表名

@TableId

将实体类中的字段映射为主键,其中type属性可以选择主键id生成策略

主键生成策略-IdType为枚举类,有以下可以选择的类型

AUTO数据库 ID 自增
NONE无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
INPUTinsert 前自行 set 主键值
ASSIGN_ID分配 ID(主键类型为 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID分配 UUID,主键类型为 String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认 default 方法)

@TableField

实体类中的字段映射为数据库中的字段,其中value属性为数据库字段名,exist属性为该字段是否在数据库中存在(适用于实体类中某些字段只在代码中有用,实际数据库中不需要保存该字段)

@TableLogic

使用该注解,需要数据库中和实体类中都有该字段,并且尽量使用yml中的全局配置

  global-config:
    db-config:
      #逻辑删除字段名
      logic-delete-field: deleted
      #被逻辑删除时的字段值     
      logic-delete-value: 0
      #默认值,即为未删除的值
      logic-not-delete-value: 1

 value属性为该字段默认值,delval属性为该逻辑删除字段被删除后的值

使用过后Mapper中调用删除的方法

 都会自动将delete语句替换为update语句

查询的方法会自动携带没有被逻辑删除的条件

 

@version

使用乐观锁可以使用该注解,在实体类在该字段上使用此注解,数据库中也应增加该字段

使用乐观锁注解,需要加上乐观锁拦截器

@Configuration
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        //定义mp拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //添加具体的拦截器
        //分页插件拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        //乐观锁拦截器
        mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mpInterceptor;
    }

}

 更新时,先查询出要修改的数据,再设置要更新的数据

 

更新语句中会对version进行and匹配,并将加1后的值更新进去 

 当多个用户要更新同一数据时,因为version字段的存在,只有先更新的数据能够顺利更新,后更新的数据不会覆盖前面的数据

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

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

相关文章

简道云教学 | 零代码应用开发软件助力应用型高校学生创新能力培养

“高校的数字化转型两大抓手,一个是学校管理系统的数字化建设,另一个是学生数字化素养的提升,简道云在我校信息化管理中的广泛应用是我们使用零代码平台进行创新能力培养的良好基础。” ————河南工学院 刘丹教授 河南工学院位于豫北工业名…

CSS初级教程(图例-链接-列表-表格)【第八天 完】

文章目录【1】CSS 图标【2】CSS 链接【3】CSS 列表【4】所有 CSS 列表属性【5】CSS 表格【6】CSS 所有表格属性CSS上回学习链接 CSS初级教程 颜色【第一天】 CSS初级教程 背景【第二天】 CSS初级教程 边框【第三天】 CSS初级教程 边距、高度、宽度【第四天】 CSS初级教程(轮廓…

使用批处理文件和mkvtoolnix批量修改默认音轨和音轨属性并重新混流

工具和版本 windows10 x64 MkvToolNix v73 待输出的Mkv格式文件,要求是同类型的文件,比如从迅雷下载下来同一来源的连续剧 步骤 一、添加文件 打开MkvToolNix GUI,添加输入文件,选中一个待输出的文件A 二、编辑音轨 选中音…

IOC底层实现原理介绍,手动实现IOC容器

面试官特别爱问SpringIOC底层实现,Spring源码晦涩难懂怎么办呢? 跟着老师手动实现一个mini ioc容器吧,实现后再回头看Spring源码事半功倍哦,就算直接和面试官讲也完全可以哦,类名完全按照源码设计,话不多说开干~!手动…

葡聚糖-叶酸;Dextran-FA;Dextran-Folicacid 结构式;科研试剂简介

名称:Dextran-Folicacid 中文名:叶酸修饰的葡聚糖 别称:葡聚糖-FA,葡聚糖-叶酸 存储条件:-20C,避光,避湿 外观: 固体或类白色絮状,取决于分子量 溶剂:溶于大部分有机溶剂&#…

HTAP 能够取代 OLAP 吗?

HTAP是什么 HTAP(Hybrid Transaction and Analytical Processing)数据库,也称混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。在互联网浪潮出现之前,企业的数据量普遍不大,特别是核心的业务数据,通常一个…

【深入理解JVM】垃圾收集器内存分配策略

目录 gc root对象有哪些 oopMap 安全点(safe point) 安全区域 卡表 伪共享问题 三色标记法 垃圾收集器 CMS G1 gc root对象有哪些 虚拟机栈中引用的对象(虚拟机栈中的引用的对象可以作为GC Root。我们程序在虚拟机的栈中执行&…

Redis安装及常用配置详解

一般redis安装于linux服务器,故本例介绍的是Linux下的安装一. Redis下载1. 官网下载tar包可以到​​ ​redis的官网​​​找到各个Redis版本的下载地址,如: https://redis.io/download/#redis-downloads,最新稳定版是7.0版2. 使用wget 下载redis在官网中…

无桥PFC的家族推演

1. 组合法构建无桥PFC PFC是一种AC-DC变换器,将交流输入电压分成正负半周,输出电压是直流,因此AC-DC变换器可以当做是两个DC-DC变换器的组合。在PFC的拓扑推演中,就是设计两个DC-DC变换器的工作模式。以下内容是基于对陈正格博士发…

流程编辑器bpmnjs的改造3:加一个审批人的设置

默认的设计器有代理人、候选用户和候选组,但是并不能满足实际的业务需求,我们需要对它进行改造,使得我们能够按照自定义的规则来生成用户任务节点的审批人。1、在bpmnjs里面加一个审批人的输入部件打开resources/properties-panel/provider/a…

MD5算法全解析

前言 这段时间刚好正在做软件安全的实验和课设,学习了各种加密算法,比如对称加密算法的DES,AES;非对称加密算法的RSA;再如今天要讲的主角-单向加密算法的MD5。为什么这么多算法,MD5成为了今天的猪脚呢?&am…

nexus raw 仓库代理(node-sass 内网下载问题)

问题背景 内网环境中使用 node 构建项目,项目中依赖了 node-sass,环境自动下载 node-saas 失败(内网)。 下面是构建 node-sass 的错误代码: [5/5] Building fresh packages... error /workspace/node_modules/node-…

FreeRTOS-消息队列详解

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:rivencode的个人主页 🔥系列专栏:玩转FreeRTOS 💬保持…

burpsuite安装HTTPS证书

burpsuite安装HTTPS证书1.Burpsuite介绍1.1.Burpsuite安装2.https证书介绍2.1.证书下载步骤2.1.1.打开burp软件2.1.2.开启代理2.1.3.下载证书2.1.4.证书2.2.证书安装步骤2.2.1.打开证书页2.2.2.导入证书2.2.3.确认安装2.3.抓包测试1.Burpsuite介绍 Burp Suite 是用于攻击web 应…

OpenStack 扩容cpu、内存

创建要扩容的实例类型&#xff0c;也就是flavor获取要扩容的server id根据命令 nova list获取刚才创建好的实例类型id根据命令 nova flavor-list执行扩容的命令nova resize <server-id> <flavor-id>举例&#xff1a;nova resize 06be1c3d-bcfb-4038-ae28-f8e7ac0a2…

【AI奇技淫巧】使用Optuna进行机器学习模型调参

使用Optuna进行机器学习模型调参Optuna简介框架特点安装方式举个例子高级配置搜索方式分支&#xff08;Branches&#xff09;与循环&#xff08;Loops&#xff09;分布式优化命令行界面用户定义属性将用户定义属性添加到Study将用户属性添加到Trial中对无望的Trial进行剪枝&…

大前端—回顾2022年明星项目,展望2023发展前沿

导读 | 2022年是艰难的一年&#xff0c;不仅有互联网的寒冬、还有新冠疫情的洗礼。但是似乎这一切都阻挡不了JavaScript的内卷&#xff0c;一年不长不短的时间中&#xff0c;JavaScript从创新、性能、功能等多维度深度进化&#xff0c;给前端带来了诸多惊喜。本文基于github上流…

(十三)并发集合——ConcurrentSkipListMap/Set

ConcurrentSkipListMapConcurrentSkipListMap与TreeMap对应&#xff0c;相当于线程安全的TreeMap&#xff0c;key有序&#xff0c;TreeMap基于红黑树&#xff0c;ConcurrentSkipListMap基于跳表。无锁链表的问题用跳表而不用红黑树是因为目前计算机领域还未找到一种高效的、作用…

LabVIEW测试和调试Web服务

LabVIEW测试和调试Web服务发布Web服务至终端前&#xff0c;需要测试HTTP方法VI是否按照预期与客户端进行通信。可直接从LabVIEW项目将Web服务置于调试服务器上&#xff0c;从而允许客户端发送请求至HTTP方法VI。调试服务器提供类似沙盒的环境。1. (Windows) 右键单击我的电脑下…

JVM- 第二章-类加载子系统

类加载子系统 2. 类加载子系统 2.1. 内存结构概述2.2. 类加载器与类的加载过程 加载阶段链接阶段初始化阶段 2.3. 类加载器分类 2.3.1. 虚拟机自带的加载器2.3.2. 用户自定义类加载器 2.4. ClassLoader的使用说明2.5. 双亲委派机制2.6. 其他 2. 类加载子系统 2.1. 内存结构…