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 官方文档。

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

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

相关文章

基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

PH热榜 | 2025-03-09

1. ResumeUp 2.0 标语&#xff1a;聊聊&#xff0c;几分钟内就能帮助你打造完美的ATS简历。 介绍&#xff1a;告别为写完美简历而烦恼的日子吧&#xff01;只需与人工智能聊天&#xff0c;回答几个简单的问题&#xff0c;就能在几分钟内生成强有力的简历&#xff0c;不仅能通…

嘉立创修改的值不在drc范围内

我是因为画电源线线宽比较大&#xff0c;超出了DRC检查范围。 解决办法&#xff1a; 改这里就好了

在Linux开发板中使用.NET实现音频开发

本文将以Linux开发板为基础&#xff0c;使用ALSA音频框架和C#语言&#xff0c;演示如何实现基础的音频录制与播放功能。 1. 背景 音频处理是嵌入式开发中常见的需求&#xff0c;无论是语音交互、环境监测还是多媒体应用都离不开音频模块的支持。在Linux系统中&#xff0c;ALSA…

Unity 通用UI界面逻辑总结

概述 在游戏开发中&#xff0c;常常会遇到一些通用的界面逻辑&#xff0c;它不论在什么类型的游戏中都会出现。为了避免重复造轮子&#xff0c;本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块&#xff0c;也可以在次基础上进行扩展修改&…

Go_zero学习笔记

<!-- go-zero --> 安装配置 go-zero_github go-zero文档 go install github.com/zeromicro/go-zero/tools/goctllatest goctl --version // goctl version 1.7.2 windows/amd64 gopath/bin/会生成goctl的执行进程(%GOPATH%\bin设置到path环境变量中) 安装protoc&pr…

【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer…

go context学习

1.Context接口2.emptyCtx3.Deadline()方法4.Done()方法5.Err方法6.Value方法&#xff08;&#xff09;7.contex应用场景8.其他context方法 1.Context接口 Context接口只有四个方法&#xff0c;以下是context源码。 type Context interface {Deadline() (deadline time.Time, …

计算机视觉图像点运算【灰度直方图均衡化图形界面实操理解 +开源代码】

对一个数字图像处理系统来说&#xff0c;一般的处理过程为三个步骤&#xff1a;图像预处理、特征抽取、图像识别和分析。图像的点运算就是预处理过程中的重要一步&#xff0c;点运算是对图像的灰度级进行变换。 图像点运算概念 点运算是指对图像的每个像素依次进行相同的灰度变…

数字电子技术基础(二十六)——TTL门电路的输入特性和扇出系数

1 TTL门电路的输入特性 如下图所示为输入端伏安特性曲线的测试电路&#xff1a; 图1 输入端伏安特性曲线测试电路 以流入输入端的方向作为输入电流的参考方向&#xff0c;调节测试电路当中&#xff0c;电位器滑动端的位置&#xff0c;可以为这个与非门的B输入端提供一个可调的…

(二 十 二)趣学设计模式 之 备忘录模式!

目录 一、 啥是备忘录模式&#xff1f;二、 为什么要用备忘录模式&#xff1f;三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;…

【HDLbits--counter】

HDLbits--counter 在IC设计中&#xff0c;counter是十分普遍和重要的设计内容&#xff1b; 题目&#xff1a;基础计数器 module top_module (input clk,input reset,output [9:0] q);always (posedge clk) beginif(reset) beginq < 0;end else beginif(q999) beginq < 0…

【NLP 39、激活函数 ⑤ Swish激活函数】

我的孤独原本是座荒岛&#xff0c;直到你称成潮汐&#xff0c;原来爱是让个体失序的永恒运动 ——25.2.25 Swish激活函数是一种近年来在深度学习中广泛应用的激活函数&#xff0c;由Google Brain团队在2017年提出。其核心设计结合了Sigmoid门控机制和线性输入的乘积&#xff0c…

Spring源码探析(二):BootstrapContext初始化深度解析(默认配置文件加密实现原理)

BootstrapContext是Spring Boot 2.4 版本后引入的全新引导上下文机制&#xff0c;‌取代了早期版本中基于BootstrapApplicationListener的配置加载模式。基于SpringClould开始了解BootstrapContext初始化。 创建DefaultBootstrapContext private DefaultBootstrapContext crea…

JSP+Servlet实现对数据库增删改查功能

前提概要 需要理解的重要概念 ​MVC模式&#xff1a; Model&#xff08;person类&#xff09;&#xff1a;数据模型View&#xff08;JSP&#xff09;&#xff1a;显示界面Controller&#xff08;Servlet&#xff09;&#xff1a;处理业务逻辑 ​请求流程&#xff1a; 浏览器 …

基于PaddleNLP使用DeepSeek-R1搭建智能体

基于PaddleNLP使用DeepSeek-R1搭建智能体 最近在学习DeepSeek&#xff0c;找到了PaddleNLP星河社区大模型&#xff0c;跟着敲写了一遍。内容来源&#xff1a;DeepSeek实战训练营&#xff1a;从云端模型部署到应用开发 - 飞桨AI Studio星河社区-人工智能学习与实训社区 本项目基…

WinForm模态与非模态窗体

1、模态窗体 1&#xff09;定义&#xff1a; 模态窗体是指当窗体显示时&#xff0c;用户必须先关闭该窗体&#xff0c;才能继续与应用程序的其他部分进行交互。 2&#xff09;特点&#xff1a; 窗体以模态方式显示时&#xff0c;会阻塞主窗体的操作。用户必须处理完模态窗体上…

相机几何:从三维世界到二维图像的映射

本系列课程将带领读者开启一场独特的三维视觉工程之旅。我们不再止步于教科书式的公式推导&#xff0c;而是聚焦于如何将抽象的数学原理转化为可落地的工程实践。通过解剖相机的光学特性、构建成像数学模型、解析坐标系转换链条&#xff0c;直至亲手实现参数标定代码&#xff0…

FreeRTOS任务状态查询

一.任务相关API vTaskList&#xff08;&#xff09;&#xff0c;创建一个表格描述每个任务的详细信息 char biaoge[1000]; //定义一个缓存 vTaskList(biaoge); //将表格存到这缓存中 printf("%s /r/n",biaoge); 1.uxTaskPriorityGet&#xff08;&#xf…

【高分论文密码】AI大模型和R语言的全类型科研图形绘制,从画图、标注、改图、美化、组合、排序分解科研绘图每个步骤

在科研成果竞争日益激烈的当下&#xff0c;「一图胜千言」已成为高水平SCI期刊的硬性门槛——数据显示很多情况的拒稿与图表质量直接相关。科研人员普遍面临的工具效率低、设计规范缺失、多维数据呈现难等痛点&#xff0c;因此科研绘图已成为成果撰写中的至关重要的一个环节&am…