@TableName注解和@Table的區(qū)別及說明
@TableName注解和@Table區(qū)別
最近開發(fā)項目的時候,從一個項目遷移代碼到另一個項目,原有項目用的是Hibernate,現(xiàn)有項目用的是mybatis-plus,代碼遷移過來后,schema屬性用于指定數(shù)據(jù)庫實例名。
但是@Table屬性schema在mybatis-plus框架中失效了,一直找不到對應(yīng)的實例名。
前言
@TableName是mybatis-plus中的注解,主要是實現(xiàn)實體類型和數(shù)據(jù)庫中的表實現(xiàn)映射。
注意,不要將@TableName和@Table注解認(rèn)為是一個,雖然功能相同,但是,@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ù)據(jù)庫中的表實現(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ù)據(jù)庫表名不同名時需要使用 @Table 標(biāo)注說明,該標(biāo)注與 @Entity 標(biāo)注并列使用,置于實體類聲明語句之前,可寫于單獨語句行,也可與聲明語句同行。
@Table 標(biāo)注的常用選項是 name,用于指明數(shù)據(jù)庫的表名
@Table標(biāo)注還有一個兩個選項 catalog 和 schema 用于設(shè)置表所屬的數(shù)據(jù)庫目錄或模式,通常為數(shù)據(jù)庫名。uniqueConstraints選項用于設(shè)置約束條件,通常不須設(shè)置。
name屬性
name屬性用于指定數(shù)據(jù)庫表名稱
若不指定則以實體類名稱作為表名
catalog屬性
catalog屬性用于指定數(shù)據(jù)庫實例名
當(dāng)catalog屬性不指定時,新創(chuàng)建的表將出現(xiàn)在url指定的數(shù)據(jù)庫實例中
當(dāng)catalog屬性設(shè)置名稱時,若數(shù)據(jù)庫存在和指定名稱一致的實例,新創(chuàng)建的表將出現(xiàn)在該實例中
schema屬性
作用與catalog屬性作用一致,可自行測試
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ù)據(jù)庫表名不一致時,name屬性可以實現(xiàn)映射,及時表名一致,也推薦使用,提高程序的可讀性
2.catalog和sechema屬性一般不需要指定
3.uniqueConstraints屬性一般也不需要指定,但是如有需要則可以指定
Table(name=“xx“)與Entity(name=“xx“) 問題
@Entity @Table(name="T_qibie")
這樣寫的話在hql里要用實體的名字 from QibieVo
如果是這樣的話
@Entity(name="T_qibie")
這樣寫的話在hql里要用表的名字 from T_qibie
還有有時候只能用@Entity(name="T_qibie")的話,可能是:JAVAEE6.0中的 javax.persistence.jar與 hibernate中的hibernate-jpa-2.1-api-1.0.0.Final.jar沖突 ,而我采取的措施是刪除了JAVAEE6.0的庫,運行就正常了,然后在加進(jìn)來有正常了 。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot中定時任務(wù)Cron表達(dá)式的終極指南最佳實踐記錄
本文詳細(xì)介紹了SpringBoot中定時任務(wù)的實現(xiàn)方法,特別是Cron表達(dá)式的使用技巧和高級用法,從基礎(chǔ)語法到復(fù)雜場景,從快速啟用到調(diào)試驗證,再到常見問題的解決,涵蓋了定時任務(wù)開發(fā)的全過程,感興趣的朋友一起看看吧2025-03-03
SpringBoot讀取外部的配置文件的代碼實現(xiàn)
這篇文章主要介紹了SpringBoot讀取外部的配置文件的代碼實現(xiàn),文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-11-11
基于Java的Spring框架來操作FreeMarker模板的示例
這篇文章主要介紹了基于Java的Spring框架來操作FreeMarker模板的示例,講到了用于進(jìn)行web模板文件的插值操作等例子,需要的朋友可以參考下2016-03-03
SpringBoot整合Freemarker實現(xiàn)頁面靜態(tài)化的詳細(xì)步驟
這篇文章主要介紹了SpringBoot整合Freemarker實現(xiàn)頁面靜態(tài)化,第一步要創(chuàng)建項目添加依賴,本文分步驟給大家詳細(xì)講解,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
java遞歸實現(xiàn)拼裝多個api的結(jié)果操作方法
本文給大家分享java遞歸實現(xiàn)拼裝多個api的結(jié)果的方法,說白了就是好幾個API結(jié)果拼裝成的,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09
Java類型轉(zhuǎn)換valueOf與parseInt區(qū)別探討解析
這篇文章主要為大家介紹了Java類型轉(zhuǎn)換valueOf與parseInt區(qū)別探討解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

