文章目录
一、引言
@Table
注解个人使用习惯
-
javax.persistence
包下的@Table
注解用于添加索引 -
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