JPA创建主键索引、普通索引,组合索引,唯一索引

https://blog.csdn.net/zengweib208/article/details/117458175?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=1

文章目录

一、引言

@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
 * 
 */
@Table(appliesTo = "admin", comment = "官方账号")
123456789

在数据库中生成的表结构则有表注释,方便后期维护。 在这里插入图片描述

二、主键索引

使用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;
123456789

三、普通索引

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

/**
 * @author zengwei
 * @email 1014483974@qq.com
 * @data 2021-06-02
 * 
 */
@Table(indexes = {
        @Index(columnList = "name"),
        @Index(columnList = "account")
})
123456789101112

在这里插入图片描述

四、组合索引

使用javax.persistence包下@Table注解,在@Index中的name参数命名相同的名称,columnList参数写入对应字段名

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  */
@Table(indexes = {
        @Index(name = "name_account", columnList = "name"),
        @Index(name = "name_account", columnList = "account")
})
123456789101112

在这里插入图片描述

五、唯一索引

1、单列唯一索引

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

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  */
@Table(uniqueConstraints = @UniqueConstraint(columnNames= {"name"}))
123456789

在这里插入图片描述

2、单列唯一组合索引

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

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  */
@Table(uniqueConstraints = @UniqueConstraint(columnNames= {"name", "account"}))
123456789

在这里插入图片描述

3、多列唯一组合索引

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

/**
  * @author zengwei
  * @email 1014483974@qq.com
  * @data 2021-06-02
  * 
  */
@Table(uniqueConstraints = {
        @UniqueConstraint(columnNames={"name", "del"}),
        @UniqueConstraint(columnNames={"account", "del"})
})
123456789101112

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值