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

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

