SpringData-Jpa-Base
3 注解
说明: 对于实体类中属性的 Setter 和 Getter 均使用 lombok 注解实现
3.1 @Entity
- 指定实体类
- 必须指定@Id
3.1.1 name
指定实体名称(表名):
- 没有指定name属性且没有使用@Table,命名为类名生成
- 指定name属性且没有使用@Table,命名为name属性value值
- 指定了name属性且使用了@Table指定name,命名以@Table的name的value
3.2 @Table
类型: ElementType.TYPE
代码示例
package com.yui.study.springdatajpa.note.entity;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Setter
@Getter
@Entity
@Table(name = "student",
uniqueConstraints = {@UniqueConstraint(name = "unique_stu_idCardNo", columnNames = "idCardNo")},
indexes = {@Index(name = "index_stu_loginId", columnList = "studNo", unique = true),
@Index(name = "index_stu_age_height_weight", columnList = "age,height,weight")},
catalog = "spring_data_jpa", schema = "removal")
public class StudentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String idCardNo;
private int studNo;
private int age;
private double height;
private double weight;
}
生成数据库语句
CREATE TABLE spring_data_jpa.student (
id BIGINT NOT NULL auto_increment,
age INTEGER NOT NULL,
height DOUBLE PRECISION NOT NULL,
id_card_no VARCHAR ( 255 ),
NAME VARCHAR ( 255 ),
stud_no INTEGER NOT NULL,
weight DOUBLE PRECISION NOT NULL,
PRIMARY KEY ( id )
) ENGINE = INNODB;
CREATE INDEX index_stu_age_height_weight ON spring_data_jpa.student ( age, height, weight );
ALTER TABLE spring_data_jpa.student ADD CONSTRAINT unique_stu_idCardNo UNIQUE ( id_card_no );
ALTER TABLE spring_data_jpa.student ADD CONSTRAINT index_stu_loginId UNIQUE ( stud_no );
3.2.1 name
name 属性指定表名
3.2.2 indexes
声明表的索引
indexes = {@Index(name="index_stu_loginId", columnList = "studNo", unique = true),
@Index(name="index_stu_age_height_weight", columnList = "age,height,weight", unique = false)})
声明索引,赋值索引数组,用 @Index 来声明创建索引
3.2.2.1 @index
name: 指定索引名称
columnList: 指定索引对应的属性名称(映射为字段),可创建联合索引,如 index_stu_age_height_weight 所示
unique: 指定索引是否为唯一索引,默认为false,如果为true,功能与属性 uniqueConstraints 一直,见 3.2.2
3.2.3 uniqueConstraints
声明表的唯一索引