@TableName注解和@Table的區(qū)別及說明
@TableName注解和@Table區(qū)別
最近開發(fā)項目的時候,從一個項目遷移代碼到另一個項目,原有項目用的是Hibernate,現(xiàn)有項目用的是mybatis-plus,代碼遷移過來后,schema屬性用于指定數(shù)據(jù)庫實例名。
但是@Table屬性schema在mybatis-plus框架中失效了,一直找不到對應的實例名。
前言
@TableName是mybatis-plus中的注解,主要是實現(xiàn)實體類型和數(shù)據(jù)庫中的表實現(xiàn)映射。
注意,不要將@TableName和@Table注解認為是一個,雖然功能相同,但是,@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
當實體類與其映射的數(shù)據(jù)庫表名不同名時需要使用 @Table 標注說明,該標注與 @Entity 標注并列使用,置于實體類聲明語句之前,可寫于單獨語句行,也可與聲明語句同行。
@Table 標注的常用選項是 name,用于指明數(shù)據(jù)庫的表名
@Table標注還有一個兩個選項 catalog 和 schema 用于設置表所屬的數(shù)據(jù)庫目錄或模式,通常為數(shù)據(jù)庫名。uniqueConstraints選項用于設置約束條件,通常不須設置。
name
屬性
name屬性用于指定數(shù)據(jù)庫表名稱
若不指定則以實體類名稱作為表名
catalog
屬性
catalog屬性用于指定數(shù)據(jù)庫實例名
當catalog屬性不指定時,新創(chuàng)建的表將出現(xiàn)在url指定的數(shù)據(jù)庫實例中
當catalog屬性設置名稱時,若數(shù)據(jù)庫存在和指定名稱一致的實例,新創(chuàng)建的表將出現(xiàn)在該實例中
schema
屬性
作用與catalog屬性作用一致,可自行測試
uniqueConstraints
屬性
uniqueConstraints屬性用于設定約束條件
@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.當實體類名和數(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īng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄
這篇文章主要介紹了SpringBoot整合Canal與RabbitMQ監(jiān)聽數(shù)據(jù)變更記錄,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09Springboot+WebSocket+Netty實現(xiàn)在線聊天/群聊系統(tǒng)
這篇文章主要實現(xiàn)在好友添加、建群、聊天對話、群聊功能,使用Java作為后端語言進行支持,界面友好,開發(fā)簡單,文章中有詳細的代碼示例供大家參考,需要的朋友可以參考下2023-08-08springboot集成ES實現(xiàn)磁盤文件全文檢索的示例代碼
這篇文章主要介紹了springboot集成ES實現(xiàn)磁盤文件全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11