JPA創建主鍵索引、普通索引,組合索引,唯一索引


一、引言

@Table注解個人使用習慣

  1. javax.persistence 包下的@Table注解用於添加索引
  2. org.hibernate.annotations包下的@Table注解用於定義表名和添加表注釋

表名&表注釋

使用org.hibernate.annotations包下@Table注解;
appliesTo用於定義表名;
comment用來定義表注釋。

/**
 * @author zengwei
 * @email 1014483974@qq.com
 * @data 2021-06-02
 * 
 * 能日賺30的APP試玩平台推薦,親測有效
 *(https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
 */
@Table(appliesTo = "admin", comment = "官方賬號")

在數據庫中生成的表結構則有表注釋,方便后期維護。
在這里插入圖片描述

二、主鍵索引

使用javax.persistence包下@Id@GeneratedValue注解;
在指定字段上,加上@Id@GeneratedValue注解;
@Id 注解可將實體Bean中某個屬性定義為主鍵;
GenerationType下有4種類型(4種主鍵生成策略)。

我這里以主鍵自增舉例

/**
 * @author zengwei
 * @email 1014483974@qq.com
 * @data 2021-06-02
 */
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "int(11) comment 'id'")
private Long id;

三、普通索引

能日賺30的APP試玩平台推薦,親測有效

使用javax.persistence包下@Table注解, @Index定義普通索引

/**
 * @author zengwei
 * @email 1014483974@qq.com
 * @data 2021-06-02
 * 
 * 能日賺30的APP試玩平台推薦,親測有效
 *(https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
 */
@Table(indexes = {
        @Index(columnList = "name"),
        @Index(columnList = "account")
})

在這里插入圖片描述

四、組合索引

使用javax.persistence包下@Table注解,在@Index中的name參數命名相同的名稱,columnList 參數寫入對應字段名

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  * 能日賺30的APP試玩平台推薦,親測有效
  *(https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
  */
@Table(indexes = {
        @Index(name = "name_account", columnList = "name"),
        @Index(name = "name_account", columnList = "account")
})

在這里插入圖片描述

五、唯一索引

1、單列唯一索引

使用javax.persistence包下@Table注解,@UniqueConstraint指定單個字段名

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  * 能日賺30的APP試玩平台推薦,親測有效
  * (https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
  */
@Table(uniqueConstraints = @UniqueConstraint(columnNames= {"name"}))

在這里插入圖片描述

2、單列唯一組合索引

能日賺30的APP試玩平台推薦,親測有效

使用javax.persistence包下@Table注解,@UniqueConstraint指定多個字段名

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  * 能日賺30的APP試玩平台推薦,親測有效
  * (https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
  */
@Table(uniqueConstraints = @UniqueConstraint(columnNames= {"name", "account"}))

在這里插入圖片描述

3、多列唯一組合索引

使用javax.persistence包下@Table注解,uniqueConstraints 下指定多個@UniqueConstraint

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  * 能日賺30的APP試玩平台推薦,親測有效
  * (https://mp.weixin.qq.com/s/V5j45WYoyIvFsZbua56RSQ)
  */
@Table(uniqueConstraints = {
        @UniqueConstraint(columnNames={"name", "del"}),
        @UniqueConstraint(columnNames={"account", "del"})
})

在這里插入圖片描述

未經允許,禁止轉載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM