@TableName注解和@Table的區(qū)別及說明
@TableName注解和@Table區(qū)別
最近開發(fā)項(xiàng)目的時(shí)候,從一個(gè)項(xiàng)目遷移代碼到另一個(gè)項(xiàng)目,原有項(xiàng)目用的是Hibernate,現(xiàn)有項(xiàng)目用的是mybatis-plus,代碼遷移過來后,schema屬性用于指定數(shù)據(jù)庫實(shí)例名。
但是@Table屬性schema在mybatis-plus框架中失效了,一直找不到對(duì)應(yīng)的實(shí)例名。
前言
@TableName是mybatis-plus中的注解,主要是實(shí)現(xiàn)實(shí)體類型和數(shù)據(jù)庫中的表實(shí)現(xiàn)映射。
注意,不要將@TableName和@Table注解認(rèn)為是一個(gè),雖然功能相同,但是,@TableName是mybatis-plus中的注解,@Table是Hibernate中的注解。
@TableName參數(shù)說明

@TableName源碼
public @interface TableName {
java.lang.String value() default "";
java.lang.String schema() default "";
boolean keepGlobalPrefix() default false;
java.lang.String resultMap() default "";
boolean autoResultMap() default false;
}
@TableName使用
@TableName("sys_user")
// 該注解主要是現(xiàn)實(shí)實(shí)體類型和數(shù)據(jù)庫中的表實(shí)現(xiàn)映射。
public class SysUser implements Serializable {
@TableId(type= IdType.AUTO)
private Long id;
private String username;
//用戶名
private String loginName;
//登錄密碼,密碼需要加密
private String password;
}
@Table
當(dāng)實(shí)體類與其映射的數(shù)據(jù)庫表名不同名時(shí)需要使用 @Table 標(biāo)注說明,該標(biāo)注與 @Entity 標(biāo)注并列使用,置于實(shí)體類聲明語句之前,可寫于單獨(dú)語句行,也可與聲明語句同行。
@Table 標(biāo)注的常用選項(xiàng)是 name,用于指明數(shù)據(jù)庫的表名
@Table標(biāo)注還有一個(gè)兩個(gè)選項(xiàng) catalog 和 schema 用于設(shè)置表所屬的數(shù)據(jù)庫目錄或模式,通常為數(shù)據(jù)庫名。uniqueConstraints選項(xiàng)用于設(shè)置約束條件,通常不須設(shè)置。
name屬性
name屬性用于指定數(shù)據(jù)庫表名稱
若不指定則以實(shí)體類名稱作為表名
catalog屬性
catalog屬性用于指定數(shù)據(jù)庫實(shí)例名
當(dāng)catalog屬性不指定時(shí),新創(chuàng)建的表將出現(xiàn)在url指定的數(shù)據(jù)庫實(shí)例中
當(dāng)catalog屬性設(shè)置名稱時(shí),若數(shù)據(jù)庫存在和指定名稱一致的實(shí)例,新創(chuàng)建的表將出現(xiàn)在該實(shí)例中
schema屬性
作用與catalog屬性作用一致,可自行測(cè)試
uniqueConstraints屬性
uniqueConstraints屬性用于設(shè)定約束條件
@Table(name="CUSTOMERS",uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
@Entity
public class Customer {
private Integer id;
private String name;
private String email;
private int age;
......
}
小結(jié)一下
1.當(dāng)實(shí)體類名和數(shù)據(jù)庫表名不一致時(shí),name屬性可以實(shí)現(xiàn)映射,及時(shí)表名一致,也推薦使用,提高程序的可讀性
2.catalog和sechema屬性一般不需要指定
3.uniqueConstraints屬性一般也不需要指定,但是如有需要?jiǎng)t可以指定
Table(name=“xx“)與Entity(name=“xx“) 問題
@Entity @Table(name="T_qibie")
這樣寫的話在hql里要用實(shí)體的名字 from QibieVo
如果是這樣的話
@Entity(name="T_qibie")
這樣寫的話在hql里要用表的名字 from T_qibie
還有有時(shí)候只能用@Entity(name="T_qibie")的話,可能是:JAVAEE6.0中的 javax.persistence.jar與 hibernate中的hibernate-jpa-2.1-api-1.0.0.Final.jar沖突 ,而我采取的措施是刪除了JAVAEE6.0的庫,運(yùn)行就正常了,然后在加進(jìn)來有正常了 。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Ribbon負(fù)載均衡器處理方法
這篇文章主要介紹了Spring Cloud Ribbon負(fù)載均衡器處理方法,看看是如何獲取服務(wù)實(shí)例,獲取以后做了哪些處理,處理后又是如何選取服務(wù)實(shí)例的,需要的朋友可以參考下2018-02-02
SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄
這篇文章主要介紹了SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Springboot+WebSocket+Netty實(shí)現(xiàn)在線聊天/群聊系統(tǒng)
這篇文章主要實(shí)現(xiàn)在好友添加、建群、聊天對(duì)話、群聊功能,使用Java作為后端語言進(jìn)行支持,界面友好,開發(fā)簡(jiǎn)單,文章中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-08-08
SpringBoot 回滾操作的幾種實(shí)現(xiàn)方式
回滾操作是一種常見的操作,用于撤銷之前執(zhí)行的操作,本文主要介紹了SpringBoot回滾操作的幾種實(shí)現(xiàn)方式,包含基于異常類型的回滾、基于自定義邏輯的回滾和基于數(shù)據(jù)庫狀態(tài)的回滾,感興趣的可以了解一下2024-03-03
jvm crash的崩潰日志詳細(xì)分析及注意點(diǎn)
本篇文章主要介紹了jvm crash的崩潰日志詳細(xì)分析及注意點(diǎn)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-04-04
springboot集成ES實(shí)現(xiàn)磁盤文件全文檢索的示例代碼
這篇文章主要介紹了springboot集成ES實(shí)現(xiàn)磁盤文件全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

