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

MyBatis-Plus 注解大全

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取


MyBatis-Plus 注解大全

MyBatis-Plus 是基于 MyBatis 的增强工具,通过注解简化了单表 CRUD 操作和复杂查询的配置。以下是常用注解的分类及详细说明:


一、核心注解

1. @TableName

  • 作用:标识实体类对应的数据库表名(当类名与表名不一致时使用)。
  • 属性
    • value:数据库表名(默认空,使用类名驼峰转下划线形式)。
    • schema:数据库 schema(可选)。
  • 示例
    @TableName("sys_user")
    public class User {// ...
    }
    

2. @TableId

  • 作用:标识实体类的主键字段。
  • 属性
    • value:数据库主键字段名(默认空,使用字段名驼峰转下划线形式)。
    • type:主键生成策略(默认为 IdType.NONE),可选值:
      • AUTO:数据库自增。
      • NONE:无策略(手动输入)。
      • INPUT:用户输入。
      • ASSIGN_ID:雪花算法生成 Long 类型 ID。
      • ASSIGN_UUID:生成 UUID 字符串。
  • 示例
    public class User {@TableId(value = "id", type = IdType.ASSIGN_ID)private Long userId;
    }
    

3. @TableField

  • 作用:标识非主键字段与数据库列的映射关系。
  • 属性
    • value:数据库字段名(默认空,使用字段名驼峰转下划线形式)。
    • exist:是否为数据库表字段(默认 true,若为 false 表示不参与 SQL 操作)。
    • fill:字段自动填充策略(如插入或更新时自动填充值),可选值:
      • FieldFill.DEFAULT:不处理。
      • FieldFill.INSERT:插入时填充。
      • FieldFill.UPDATE:更新时填充。
      • FieldFill.INSERT_UPDATE:插入和更新时填充。
    • select:是否参与查询(默认 true)。
  • 示例
    public class User {@TableField(value = "create_time", fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(exist = false)private String remark; // 非数据库字段
    }
    

二、条件构造注解

4. @Param

  • 作用:在 Mapper 接口方法中定义参数别名,用于 XML 或注解中的 SQL 绑定(非 MyBatis-Plus 特有,但常用)。
  • 示例
    List<User> selectByName(@Param("name") String name);
    

三、结果映射注解

5. @TableLogic

  • 作用:标识逻辑删除字段(标记记录是否被删除)。
  • 属性
    • value:未删除时的值(默认 0)。
    • delval:删除后的值(默认 1)。
  • 示例
    @TableLogic(value = "0", delval = "1")
    private Integer isDeleted;
    

四、其他功能注解

6. @Version

  • 作用:标识乐观锁版本号字段(用于并发控制)。
  • 示例
    @Version
    private Integer version;
    

7. @EnumValue

  • 作用:标识枚举类中与数据库存储值对应的字段。
  • 示例
    public enum GenderEnum {MALE(1, "男"),FEMALE(2, "女");@EnumValueprivate final Integer code;private final String desc;
    }
    

8. @KeySequence

  • 作用:指定主键序列名称(适用于 Oracle、PostgreSQL 等数据库的序列主键)。
  • 属性
    • value:序列名。
    • clazz:主键类型(如 Long.class)。
  • 示例
    @KeySequence(value = "SEQ_USER", clazz = Long.class)
    public class User {// ...
    }
    

9. @InterceptorIgnore

  • 作用:忽略特定拦截器(如多租户插件、动态表名插件等)。
  • 属性
    • tenantLine:是否忽略多租户拦截(默认 "false")。
    • dynamicTableName:是否忽略动态表名拦截。
  • 示例
    @InterceptorIgnore(tenantLine = "true")
    List<User> selectAll();
    

五、自动填充配置

通过 @TableField(fill = FieldFill.xxx) 结合 MetaObjectHandler 实现字段自动填充:

  1. 定义处理器

    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());}@Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());}
    }
    
  2. 实体类字段注解

    public class User {@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(fill = FieldFill.UPDATE)private LocalDateTime updateTime;
    }
    

六、常见问题

  1. 表名或字段名驼峰转下划线
    MyBatis-Plus 默认开启驼峰转下划线映射(如 userNameuser_name)。若需关闭,配置:

    mybatis-plus:configuration:map-underscore-to-camel-case: false
    
  2. 逻辑删除全局配置
    application.yml 中配置逻辑删除的默认值:

    mybatis-plus:global-config:db-config:logic-delete-field: isDeleted  # 逻辑删除字段名logic-delete-value: 1         # 删除后的值logic-not-delete-value: 0      # 未删除时的值
    

通过掌握以上注解,开发者可以高效利用 MyBatis-Plus 简化数据库操作。更多细节可参考 MyBatis-Plus 官方文档。

相关文章:

MyBatis-Plus 注解大全

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 MyBatis-Plus 注解大全 MyBatis-Plus 是基于 MyBatis 的增强工具&#xff0c;通过注解简化了单表 CRUD 操作和复杂查询的配置。以下是常用注解的分类及详细说…...

Redis基础之基础概念

NoSQL数据库的优点 1.直接减少CPU与IO压力&#xff0c;是直接通过内存来读取的 2.可以直接作为缓存使用&#xff0c;减少IO操作 如果我们在请求中需要来传递数据&#xff0c;使用NoSQL可以来进行数据的直接存储和读取&#xff0c;从而来减少CPU与IO压力 或者是如果一些数据较为…...

Django小白级开发入门

1、Django概述 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。 Django 框架的核心组件有&#xff1a; 用于创建模型的对象关系映射为最终用户设计较好的管理界面URL 设计设计者友好的模板…...

热图回归(Heatmap Regression)

热图回归(Heatmap Regression)是一种常用于关键点估计任务的方法,特别是在人体姿态估计中。它的基本思想是通过生成热图来表示某个关键点在图像中出现的概率或强度。以下是热图回归的主要特点和工作原理: 主要特点 热图表示: 每个关键点对应一个热图,热图中的每个像素值…...

SpringSecurity认证授权完整流程

SpringSecurity认证流程&#xff1a;loadUserByUsername&#xff08;&#xff09;方法内部实现。 实现步骤&#xff1a; 构建一个自定义的service接口&#xff0c;实现SpringSecurity的UserDetailService接口。建一个service实现类&#xff0c;实现此loadUserByUsername方法。…...

MongoDB用户管理和复制组

用户管理 1、建用户时&#xff0c;use到的库就是此用户的验证库 2、登录时必须明确指定验证库才能登录 3、通常管理员用的验证库是admin&#xff0c;普通用户的验证库一般是所管理的库设置为验证库 4、如果直接登录到数据库&#xff0c;不进行use&#xff08;示例&#xff…...

【Android】setText调用导致的悬浮窗抖动问题

在Android13中&#xff0c;有这么一个bug&#xff0c;写一个可以拖到的悬浮窗&#xff0c;这个悬浮窗里有TextView&#xff0c;在拖到某个位置后&#xff0c;再调用TextView的setText方法&#xff0c;会发现出现了一个窗口动画&#xff0c;悬浮窗跳到了起始位置&#xff0c;从开…...

【从零开始学习计算机科学】数字逻辑(四)数字系统设计

【从零开始学习计算机科学】数字逻辑(四)数字系统设计 数字系统设计硬件描述语言 HDL(Hardware Description Language)Verilog HDL 的起源与发展HDL 软核、固核和硬核的重用HDL 的应用数字系统设计实现数字系统设计 一个数字集成电路的可以从不同的层次(系统级、算法级、…...

QT 作业 C++ day5

作业 代码 MyQThread.h class MyThread : public QThread {Q_OBJECT public:MyThread(QObject *parent nullptr); protected:void run() override; signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index); public slots:// "复…...

洛谷 P2234:[HNOI2002] 营业额统计 ← STL set

【题目来源】 https://www.luogu.com.cn/problem/P2234 【题目描述】 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析…...

植物神经功能紊乱检查不出来,浑身难受?

植物神经功能紊乱&#xff0c;又称为自主神经功能失调&#xff0c;是一种功能性神经症&#xff0c;它涉及身体多个系统的不规则反应&#xff0c;通常没有器质性病变作为基础。这意味着&#xff0c;尽管患者可能会体验到多种症状&#xff0c;如焦虑、紧张、心悸、疲劳、失眠等&a…...

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

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

基于SpringBoot+Vue的工商局商家管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

ESP8266 入门(第 2 部分):使用 AT 命令

使用 AT 命令对 WiFi 收发器ESP8266编程 本教程是上一个教程 ESP8266 入门(第 1 部分)的延续。因此,简单回顾一下,在之前的教程中,我们介绍了 ESP 模块,并学习了一些基础知识。我们还使用 FTDI 串行适配器模块制作了一个开发板,该模块可以很容易地用于使用 AT 命令和 A…...

【CSS3】筑基篇

目录 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 CSS 三大特性继承性层叠性优先级 背景属性背景色背景图背景图平铺方式背景图位置背景图缩放背景图固定背景复合属性 显示模式显示模式块级元素行内元素行内块元素 转换显示模式 结构伪类选择器结构伪类选择器…...

11-Agent中配置自己的插件

目录 关键词 摘要 速览 配置和集成自定义插件 使用AI插件在直播间绘制图像 API接口调用及配置说明 创建和配置API工具以生成图像 编写和配置参数及API调用说明 如何配置和使用API进行HTTP请求 配置和测试API插件的步骤 思维导图 发言总结 要点回顾 如何配置一个专…...

2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…...

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布&#xff01;此次更新&#xff0c;Easysearch 增加了新的功能和数据类型&#xff0c;包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持&#xff0c;Console 新增了日志查询功能。 INFINI Easyse…...

关于网络数通工程师 OSPF 协议的常见面试问题

基础理论部分‌ ‌OSPF是什么&#xff1f;其核心设计目标及主要特性有哪些&#xff1f;‌ OSPF&#xff08;开放式最短路径优先&#xff09;是基于链路状态的内部网关协议&#xff08;IGP&#xff09;&#xff0c;使用Dijkstra的SPF算法计算最短路径树&#xff0c;核心目标包括…...

Go 语言 + libbpfgo 实战 eBPF 开发

Go 语言 libbpfgo 实战 eBPF 开发 1. 引言 这是专栏的第一篇文章&#xff0c;我们将从环境准备、示例代码运行和详解三个方面&#xff0c;带你快速入门 eBPF 开发。 &#x1f4cc; 读完这篇文章&#xff0c;你将学会&#xff1a; ✔️ 如何用 Go libbpfgo 开发 eBPF 程序。…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...