@GeneratedValue:为一个实体生成一个唯一标识的主键,@GeneratedValue提供了主键的生成策略,@GeneratedValue注解有两个属性,分别是strategy和generator
generator属性的值是一个字符串,默认为 "",其声明了主键生成器的名称,一般是@GeneratedValue(generator = "JDBC")
strategy属性提供四种值:
AUTO主键由程序控制, 是默认选项 ,不设置就是这个
IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持
Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植
@GenericGenerator:定义主键生成器
@Entity:指出该Java 类为实体类,将映射到指定的数据库表。如声明一个实体类 Customer,它将映射到数据库中的 customer 表上。
@Table:当实体类与其映射的数据库表名不同名时使用 ,与 @Entity 标注同时使用
@Enumerated:使用此注解映射枚举字段,以String类型存入数据库,注入数据库的类型有两种:EnumType.ORDINAL(Interger)、EnumType.STRING(String)
@Embedded、@Embeddable:当一个实体类要在多个不同的实体类中进行使用,而其不需要生成数据库
@Embeddable:注解在类上,表示此类是可以被其他类嵌套
@Embedded:注解在属性上,表示嵌套被@Embeddable注解的同类型类
@Id:声明一个实体类的属性映射为数据库的主键列。
@Basic: 表示一个简单的属性到数据库表的字段的映射,默认使用
@Column:当实体的属性与其映射的数据库表的列不同名时使用
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性
@Temporal:在核心的 Java API 中并没有定义 Date 类型的精度(temporal precision). 而在数据库中,表示 Date 类型的数据有 DATE, TIME, 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者 兼备).在进行属性映射时可使用@Temporal注解来调整精度
@OneToOne:描述一个 一对一的关联
@ManyToOne:表示一个多对一的映射,该注解标注的属性通常是数据库表的外键.
@OneToMany:描述一个 一对多的关联,该属性应该为集体类型,在数据库中并没有实际字段
@ManyToMany:描述一个多对多的关联.多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理
JoinColumn:如果在entity class的field上定义了关系(one2one或one2many等),通过JoinColumn来定义关系的属性【定义外键】。
@MapKey:在一对多,多对多关系中,我们可以用Map来保存集合对象。默认用主键值做key,如果指定了name属性,就用指定的field的值做key。
@OrderBy:在一对多,多对多关系中,希望从数据库加载出来的集合对象是按一定方式排序的,这可以通过OrderBy来实现,默认是按对象的主键升序排列
@ElementCollection:集合映射
@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy:表示字段为创建时间字段(insert自动设置)、创建用户字段(insert自动设置)、最后修改时间字段(update自定设置)、最后修改用户字段(update自定设置),用法:
1、@EntityListeners(AuditingEntityListener.class):申明实体类并加注解
2、@EnableJpaAuditing:在启动类中加此注解
3、在实体类中属性中加上面四种注解
4、自定义添加用户
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8"):将Date属性转换为String类型, timezone解决(相差8小时)
@JsonSerialize:作用在类或字段上,转化java对象到json格式(需自定义转化类继承JsonSerializer<T>
@JsonDeserialize:作用在类或字段上,转化json格式到java对象(需自定义转化类继承JsonDeserializer<T>)
@JsonProperty:作用在属性上,把属性名称序列化为另一个名称(trueName属性序列化为name)
@JsonIgnoreProperties(ignoreUnknown = true):作用在类上,忽略掉json数据里包含了实体类没有的字段
@JsonIgnore:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响