MyBatis-Plus的常用注解

2023-09-21 17:01:45

一、@TableName

在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表,由此得出结论,MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致。

1.1 引出问题

若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?

我们将表user更名为t_user,测试查询功能

程序抛出异常,Table ‘mybatis_plus.user’ doesn’t exist,因为现在的表名为t_user,而默认操作的表名和实体类型的类名一致,即user

1.2 解决问题

a、使用注解@TableName解决问题

@TableName注解是MyBatis-Plus框架提供的一个注解,用于标识实体类对应的数据库表名。

使用@TableName注解可以将实体类与数据库表进行映射,可以通过设置value属性来指定表名。

在实体类类型上添加@TableName("t_user"),标识实体类对应的表,即可成功执行SQL语句

@Data
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
b、使用全局配置解决问题

在开发的过程中,我们经常遇到以上的问题,即实体类所对应的表都有固定的前缀,例如 t_ 或 tbl_ 此时,可以使用MyBatis-Plus提供的全局配置,为实体类所对应的表名设置默认的前缀,那么就不需要在每个实体类上通过@TableName标识实体类对应的表

mybatis-plus:
  global-config:
    db-config:
      # 设置实体类所对应的表的统一前缀
      table-prefix: t_

二、@TableId

MyBatis-Plus框架提供了@TableId注解,用于标识实体类中作为主键的属性。

@TableId注解可以用于标识实体类中的主键字段,并且可以指定该字段的生成策略、主键类型等属性。常用的属性包括:

  • value:指定主键字段名,默认为"id"。如果主键字段名与数据库中的字段名不一致,可以通过该属性进行映射。

  • type:指定主键类型,常用的类型有IdType.AUTO、IdType.ASSIGN_ID、IdType.UUID等。默认为IdType.ASSIGN_ID,表示基于雪花算法的策略生成数据id.

常用的主键策略: 

描述
IdType.ASSIGN_ID(默认)基于雪花算法的策略生成数据id,与数据库id是否设置自增无关
IdType.AUTO使用数据库的自增策略,注意,该类型请确保数据库设置了id自增,否则无效

示例用法如下:

public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    //...
}

在上述示例中,User类中的id字段被标识为主键,并指定了主键生成策略为自动增长,默认使用数据库自增主键。

通过@TableId注解,您可以更方便地定义实体类的主键字段,并且可以配置主键生成策略和类型,框架会根据注解的配置进行相应的处理。

也可以配置全局主键生成策略:

# 加入日志功能
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 设置MyBatis-Plus的全局配置
  global-config:
    db-config:
      # 设置实体类所对应的表的统一前缀
      table-prefix: t_
      # 设置统一的主键生成策略
      id-type: auto

更多推荐

【CSS3】

文章目录1.简介2.边框3.圆角4.背景5.渐变CSS3径向渐变6.文本效果7.字体8.2D转换9.3D转换10.过渡11.动画12.多列13.用户界面14.按钮​1.简介模块CSS3被拆分为"模块"。旧规范已拆分成小块,还增加了新的。一些最重要CSS3模块如下:选择器盒模型背景和边框文字特效2D/3D转换动画多列布局

前端JavaScript Error 类: 异常处理与错误管理

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.Error类简介2.Error类属性3.Error类的API4.Error类的应用场景5.自定义错误类型6.注意事项引言在JavaScript开发中,处理错误和异常是非常重要的。Error类是JavaS

一文快速创建前端react项目

目前React是最受欢迎和广泛使用的JavaScript库之一。许多知名的公司和组织都在使用React来构建它们的Web应用程序,包括Facebook,Netflix等。学习好React将会使你能够获得更多的就业机会和职业发展机会。要快速创建React项目,你可以使用CreateReactApp工具。CreateRea

【腾讯云国际站】CDN内容分发网络特性介绍

为什么使用腾讯云国际站CDN内容分发网络?当用户直接访问源站中的静态内容时,可能面临的体验问题:客户离服务器越远,访问速度越慢。客户数量越多,网络带宽费用越高。跨境用户访问体验较差。腾讯云国际站CDN如何改善您的网络体验:腾讯云国际站CDN缓存内容后,用户仅需要访问就近的CDN节点即可获取静态内容。缓解源站带宽压力,网

实现AIGC更好的数据存力,这家科技巨头为我们指明了方向

存力即数据存储能力蕴藏着巨大的发展机会【全球存储观察|热点关注】2023年,全球被ChatGPT的热潮席卷,拥抱AIGC的创新赛道成为众多企业的新选择。全球存储观察分析指出,影响AIGC发展的三大因素也日益凸显,即算力、存力与运力,算力即计算能力;存力即数据存储能力;运力即网络运载能力。而其中令业界越来越重视的存力,蕴

Linux——Shell脚本编程(2)

一、Shell变量LinuxShell中的变量分为,系统变量和用户自定义变量(这个用的比较多)。系统变量:$HOME、$PWD、$SHELL、$USER等等,比如:echo$HOME等等..显示当前shell中所有变量:set举例说明:二、设置环境变量记得在注释的时候,内容单独放在一块。位置参数变量注意此处的脚本中,确

【C#源码】医院检验信息管理系统LIS LIS源码

LIS检验系统包含检验科各部门工作和管理需求及其它实验室检验的相应事务,具有检验单申请、付费,标本采集、接收、传输、处理、分注、分类(按项目分类)、检测的自动化流水作业,检验结果自动分析,检验数据自动传输、手工输入,检验结果审核的辅助处理,室内质量控制完善执行,分析后标本贮存管理,病人、医生方便获得检验单等基本功能,并

【2023】Git版本控制-本地仓库详解

目录1.Git是什么?它能做什么?2.安装Git3.Git版本管理3.1.Git初始化(创建仓库)3.2.提交代码3.3.代码回退3.4.代码恢复4.分支4.1.创建分支4.2.在分支上提交任务4.3.合并分支4.4.删除分支1.Git是什么?它能做什么?Git是一个分布式版本控制系统,它主要用于跟踪和管理软件项目的源

如何选择服务器?服务器选择方法

选择适合的服务器需要考虑多个因素,包括预期的工作负载、性能需求、可扩展性、安全性和预算等。以下是一些常见的方法和考虑因素,可帮助您选择适合的服务器:确定工作负载:首先要了解服务器将用于什么样的工作负载。是用于网站托管、数据库管理、文件存储还是其他特定的应用程序?不同的工作负载对服务器的要求不同,例如处理高流量的网站可能

基于SSM的北京集联软件科技有限公司信息管理系统

末尾获取源码开发语言:JavaJava开发工具:JDK1.8后端框架:SSM前端:采用JSP技术开发数据库:MySQL5.7和Navicat管理工具结合服务器:Tomcat8.5开发软件:IDEA/Eclipse是否Maven项目:是目录一、项目简介二、系统设计系统概要设计系统功能结构设计三、系统项目截图用户管理公告管

软考考试多少分算通过?

软考证书取得需要达到总分45分,每门科目满分为75分。因此,不要小看45分,在考试中获得这个分数并不容易。此外,软考要求一次性通过,如果没有通过,成绩将不被保留。因此,必须在一次考试中成功通过所有科目,否则就需要重新参加考试。如果考生只通过了其中一门,而另一门没能通过,就需要面对重新参加考试的情况。因此,建议考生在选择

热文推荐