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"})
})

在这里插入图片描述

未经允许,禁止转载

原文地址:https://www.cnblogs.com/shiqiboy3974/p/14843394.html