@Entity
表明这是一个实体类,要与数据库做orm映射,默认表的名字就是类名,表中的字段就是类中的属性。
@Table
就是改变某些默认的映射规则,如表名,schema等,可以添加索引和约束
@Transient
表示该属性并非是一个要映射到数据库表中的字段,只是起辅助作用
@ManyToOne(多对一)
单向:不产生中间表,但可以用@Joincolumn(name=" ")来指定生成外键的名字,外键在多的一方表中产生!
@OneToMany(一对多)
单向:会产生中间表,此时可以用@onetoMany @Joincolumn(name=" ")避免产生中间表,并且指定了外键的名字(别看 @joincolumn在一中写着,但它存在在多的那个表中)
@Temporal
Temporal注解的作用就是帮Java的Date类型进行格式化,一共有三种注解值:
第一种:@Temporal(TemporalType.DATE)——>实体类会封装成日期“yyyy-MM-dd”的 Date类型。
第二种:@Temporal(TemporalType.TIME)——>实体类会封装成时间“hh-MM-ss”的 Date类型。
第三种:@Temporal(TemporalType.TIMESTAMP)——>实体类会封装成完整的时间“yyyy-MM-dd hh:MM:ss”的 Date类型。
@JsonBackReference和@JsonManagedReference:
这两个标注通常配对使用,通常用在父子关系中。@JsonBackReference标注的属性在序列化(serialization,即将对象转换为json数据)时,会被忽略(即结果中的json数据不包含该属性的内容)。@JsonManagedReference标注的属性则会被序列化。在序列化时,@JsonBackReference的作用相当于@JsonIgnore,此时可以没有@JsonManagedReference。但在反序列化(deserialization,即json数据转换为对象)时,如果没有@JsonManagedReference,则不会自动注入@JsonBackReference标注的属性(被忽略的父或子);如果有@JsonManagedReference,则会自动注入自动注入@JsonBackReference标注的属性。
@MappedSuperclass
这个注解表示在父类上面的,用来标识父类。
@GeneratedValue
主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键),@GeneratedValue提供了主键的生成策略。@GeneratedValue注解有两个属性,分别是strategy和generator,其中generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称(对应于同名的主键生成器@SequenceGenerator和@TableGenerator)。
@GenericGenerator
自定义主键生成策略,@GeneratedValue(通用)和@GenericGenerator的区别是:一个是通用的一个是自定义的这就是他们的区别。
@Column
用来标识实体类中属性与数据表中字段的对应关系
@JsonIgnore
在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@ManyToMany 注解
manyToMany需要和@JoinTable表结合使用,ManyToMany总是使用中间关系连接表来存储关系。如果两个Vo都定义了ManyToMany的话,因为单向关系,会生成有2个中间表。所以需要改造成双向关系,使其只存在一个中间表。
@Autowired
它可以对类成员变量、方法及构造函数进行标注,完成自动装配
@RestController
相当于Controller
的所有方法都标注了@ResponseBody
,该注解表示返回的数据不是html标签的页面,而是其他某种格式的数据,如json和xml等
@ResponseBody
表示返回的数据不是html标签的页面,而是其他某种格式的数据,如json和xml等