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

在这里插入图片描述

未经允许,禁止转载

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值