欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatisPlus @TableName表名注解的基本操作

 更新時間:2025年09月17日 11:11:35   作者:awonw  
@TableName注解是MyBatis-Plus中用于指定實(shí)體類與數(shù)據(jù)庫表映射關(guān)系的重要工具,通過使用@TableName注解,可以明確地指定表名,支持多級表名和動態(tài)表名,本文給大家介紹MyBatisPlus @TableName表名注解的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧

在 MyBatis-Plus 中,@TableName 是一個非常重要的注解,用于指定實(shí)體類(Entity)與數(shù)據(jù)庫表之間的映射關(guān)系。通過使用 @TableName 注解,可以明確地告訴 MyBatis-Plus 哪個實(shí)體類對應(yīng)數(shù)據(jù)庫中的哪張表。這使得 MyBatis-Plus 能夠正確地生成 SQL 語句并進(jìn)行數(shù)據(jù)操作。

1.@TableName的基本用法

@TableName 注解通常用于實(shí)體類的類定義上,用于指定實(shí)體類對應(yīng)的數(shù)據(jù)庫表名。如果實(shí)體類的類名與數(shù)據(jù)庫表名一致(按照駝峰命名規(guī)則),則可以省略 @TableName 注解。如果表名與類名不一致,則必須使用 @TableName 注解來指定表名。

示例 1:省略@TableName注解

假設(shè)數(shù)據(jù)庫中有一張表 user,表結(jié)構(gòu)如下:

CREATE TABLE `user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL,
  `age` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

對應(yīng)的實(shí)體類可以這樣定義(省略 @TableName 注解):

package com.example.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    // 省略 getter 和 setter 方法
}

因?yàn)閷?shí)體類 User 和表名 user 是一致的(按照駝峰命名規(guī)則),所以可以省略 @TableName 注解。

示例 2:使用@TableName注解

如果表名與實(shí)體類名不一致,或者表名是多級表名(例如 sys_user),則必須使用 @TableName 注解來指定表名。

假設(shè)數(shù)據(jù)庫中有一張表 sys_user,表結(jié)構(gòu)如下:

CREATE TABLE `sys_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL,
  `age` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

對應(yīng)的實(shí)體類可以這樣定義:

package com.example.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("sys_user") // 指定表名
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String username; // 注意字段名與表字段名一致
    private Integer age;
    // 省略 getter 和 setter 方法
}

2.@TableName的屬性

@TableName 注解提供了以下屬性,用于進(jìn)一步配置表名映射:

  • value:指定數(shù)據(jù)庫表名。
  • resultMap:指定 resultMap 的名稱(可選)。
  • autoResultMap:是否自動生成 resultMap(默認(rèn)為 true)。
  • exclude:指定需要排除的字段名(可選)。

示例:使用exclude屬性

假設(shè)表 sys_user 中有一個字段 create_time,但在實(shí)體類中不需要映射這個字段,可以使用 exclude 屬性來排除它:

package com.example.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName(value = "sys_user", exclude = "create_time")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String username;
    private Integer age;
    // 省略 getter 和 setter 方法
}

3. 多級表名映射

在實(shí)際項(xiàng)目中,表名可能包含多級命名(例如 sys_user)。@TableName 注解可以直接指定完整的表名,MyBatis-Plus 會根據(jù)指定的表名生成 SQL 語句。

示例:多級表名

假設(shè)數(shù)據(jù)庫中有一張表 sys_user,表結(jié)構(gòu)如下:

CREATE TABLE `sys_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL,
  `age` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

對應(yīng)的實(shí)體類可以這樣定義:

package com.example.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("sys_user") // 指定多級表名
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String username;
    private Integer age;
    // 省略 getter 和 setter 方法
}

4. 動態(tài)表名

在某些場景下,表名可能需要動態(tài)生成(例如分表)。MyBatis-Plus 支持通過 @TableName 注解的 value 屬性動態(tài)拼接表名。

示例:動態(tài)表名

假設(shè)有一個分表策略,表名根據(jù)年份動態(tài)生成(例如 user_2024user_2025 等),可以通過以下方式實(shí)現(xiàn):

package com.example.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
@TableName(value = "user_" + LocalDate.now().getYear()) // 動態(tài)表名
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    // 省略 getter 和 setter 方法
}

5. 總結(jié)

@TableName 注解是 MyBatis-Plus 中用于指定實(shí)體類與數(shù)據(jù)庫表映射關(guān)系的重要工具。通過使用 @TableName 注解,可以明確地指定表名,支持多級表名和動態(tài)表名。合理使用 @TableName 注解可以提高代碼的可讀性和可維護(hù)性,同時避免因表名不一致導(dǎo)致的問題。

到此這篇關(guān)于MyBatisPlus @TableName表名注解的文章就介紹到這了,更多相關(guān)MyBatisPlus @TableName表名注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot詳解實(shí)現(xiàn)食品倉庫管理系統(tǒng)流程

    Springboot詳解實(shí)現(xiàn)食品倉庫管理系統(tǒng)流程

    這是一個使用Springboot開發(fā)的食品倉庫管理系統(tǒng),是為商家提供商品貨物進(jìn)銷存的信息化管理系統(tǒng),具有一個倉庫管理系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧
    2022-06-06
  • Java實(shí)現(xiàn)占位符名稱替換值

    Java實(shí)現(xiàn)占位符名稱替換值

    占位符現(xiàn)在應(yīng)該說是比較流行的動態(tài)賦值,本文主要介紹了Java占位符名稱替換值,根據(jù)一串帶著參數(shù)名占位符的url,替換掉對應(yīng)參數(shù)名的值,感興趣的可以了解一下
    2021-07-07
  • idea打開和讀取*properties文件亂碼的解決

    idea打開和讀取*properties文件亂碼的解決

    本文主要介紹了idea打開和讀取*properties文件亂碼的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • Spring?Security過濾器鏈體系的實(shí)例詳解

    Spring?Security過濾器鏈體系的實(shí)例詳解

    這篇文章主要介紹了Spring?Security過濾器鏈體系,通過思維導(dǎo)圖可以很好的幫助大家理解配置類的相關(guān)知識,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Java設(shè)計(jì)模式之淺談外觀模式

    Java設(shè)計(jì)模式之淺談外觀模式

    這篇文章主要介紹了Java設(shè)計(jì)模式之外觀模式的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Java設(shè)計(jì)模式七大原則之合成復(fù)用原則詳解

    Java設(shè)計(jì)模式七大原則之合成復(fù)用原則詳解

    合成復(fù)用原則(Composite Reuse Principle),即盡量使用組合/聚合的方式,而不是使用繼承。本文將為大家具體介紹一下Java設(shè)計(jì)模式七大原則之一的合成復(fù)用原則,需要的可以參考一下
    2022-02-02
  • 解析Tomcat 6、7在EL表達(dá)式解析時存在的一個Bug

    解析Tomcat 6、7在EL表達(dá)式解析時存在的一個Bug

    這篇文章主要是對Tomcat 6、7在EL表達(dá)式解析時存在的一個Bug進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • mybatis配置Mapper.xml文件時遇到的問題及解決

    mybatis配置Mapper.xml文件時遇到的問題及解決

    這篇文章主要介紹了mybatis配置Mapper.xml文件時遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java中ReentrantReadWriteLock讀寫鎖的實(shí)現(xiàn)

    Java中ReentrantReadWriteLock讀寫鎖的實(shí)現(xiàn)

    本文主要介紹了ReentrantReadWriteLock讀寫鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • 一文掌握Spring?Boot?日志文件

    一文掌握Spring?Boot?日志文件

    日志是程序的重要組成部分,日志對于我們來說,最主要的用途就是排除和定位問題,這篇文章主要介紹了Spring?Boot?日志文件,需要的朋友可以參考下
    2023-03-03

最新評論