• JPA注解


    • @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中的一些属性忽略掉,序列化和反序列化都受影响

  • 相关阅读:
    LuaJIT 之 FFI
    rtmp时间戳问题导致的丢帧,帧率显示错误
    c# 调用 c++的 dll 中关于 char*传入传出参数
    “Microsoft”中不存在类型或命名空间名称“Office”(是否缺少程序集引用?)
    udp,select超时和recvfrom收不到数据原因
    rtmpdump应用在window中
    Win7下安装openssl
    debug模式不报错,release模式报错
    qt 断点无效
    http协议 c++ 接收
  • 原文地址:https://www.cnblogs.com/yjh1995/p/15902593.html
Copyright © 2020-2023  润新知