• SpringBoot JPA注解详解


    1.@OneToOne
    2.@OneToMany
    targetEntity: 默认关联的实体类型。如果集合类中指定了具体类型了,不需要使用targetEntity.否则需要targetEntity指定
    Cascade: 级联操作
    CascadeType. PERSIST 级联持久化 ( 保存 ) 操作
    CascadeType. MERGE 级联更新 ( 合并 ) 操作
    CascadeType. REFRESH 级联刷新操作,只会查询获取操作
    CascadeType. REMOVE 级联删除操作
    CascadeType. ALL 级联以上全部操作
    Fetch: 抓取是否延迟加载,默认情况一的方为立即加载FetchType.EAGER,多的一方为延迟加载FetchType.LAZY
    mappedBy: 关系维护
    3.@ManyToOne
    4.@ManyToMany
    5.@JoinColumn
    6.不加注解 默认 @Basic
    @Basic 表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的 getXxxx() 方法,默认即为@Basic
    fetch: 表示该属性的读取策略,有 EAGER 和 LAZY 两种,分别表示主支抓取和延迟加载,默认为 EAGER.
    optional:表示该属性是否允许为null, 默认为true
    设置POJO为实体 @Entity
    @Entity
    public class Demo {
    }
    设置表名 @Table
    @Table(name = "demo", schema = "sd")
    public class Demo {
    }
    设置主键 @Id
    @Id
    private String id;
    设置字段类型 @Column
    name:字段名
    unique:是否唯一
    nullable:是否可以为空
    inserttable:是否可以插入
    updateable:是否可以更新
    columnDefinition: 定义建表时创建此列的DDL
    secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。
    @Column(name = "user_code", nullable = false, length=32)//设置属性userCode对应的字段为user_code,长度为32,非空
    private String userCode;
    @Column(name = "user_wages", nullable = true, precision=12, scale=2)//设置属性wages对应的字段为user_wages,12位数字可保留两位小数,可以为空
    private double wages;
    @Temporal(TemporalType.DATE)//设置为时间类型
    private Date joinDate;
    字段排序,在加载数据的时候可以为其指定顺序 @OrderBy
    @OrderBy("group_name ASC, name DESC")
    private List<Demo> books = new ArrayList<Demo>();
    7.主键生成策略 @GeneratedValue
    TABLE:使用一个特定的数据库表格来保存主键。
    SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
    IDENTITY:主键由数据库自动生成(主要是自动增长型)
    AUTO:主键由程序控制(也是默认的,在指定主键时,如果不指定主键生成策略,默认为AUTO)
    数据库对GeneratorValue4种策略的支持情况如下:
    MYSQL
    GenerationType.TABLE
    GenerationType.AUTO
    GenerationType.IDENTITY
    不支持GenerationType.SEQUENCE
    ORACLE
    strategy=GenerationType.AUTO
    GenerationType.SEQUENCE
    GenerationType.TABLE
    不支持GenerationType.IDENTITY
    GenerationType.TABLE
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator="payablemoney_gen")
    @TableGenerator(name = "pk_gen", table="tb_generator",
    pkColumnName="gen_name", valueColumnName="gen_value",
    pkColumnValue="PAYABLEMOENY_PK", allocationSize=1)
    private String id;
    GenerationType.SEQUENCE
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")
    @SequenceGenerator(name="payablemoney_seq", sequenceName="seq_payment")
    private String id;
    GenerationType.IDENTITY
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;
    GenerationType.AUTO
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private String id;
    8.主键生成策略 @GenericGenerator
    @GenericGenerator注解是hibernate所提供的自定义主键生成策略生成器,由@GenericGenerator实现多定义的策略。所以,它要配合@GeneratedValue一起使用,并且@GeneratedValue注解中的”generator”属性要与@GenericGenerator注解中name属性一致,strategy属性表示hibernate的主键生成策略。
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")
    @GenericGenerator(name = "payablemoney_seq", strategy = "uuid")
    private String id;
    @GenericGenerator支持13种策略,分别是:
    GENERATORS.put("uuid", UUIDHexGenerator.class);
    GENERATORS.put("hilo", TableHiLoGenerator.class);
    GENERATORS.put("assigned", Assigned.class);
    GENERATORS.put("identity", IdentityGenerator.class);
    GENERATORS.put("select", SelectGenerator.class);
    GENERATORS.put("sequence", SequenceGenerator.class);
    GENERATORS.put("seqhilo", SequenceHiLoGenerator.class);
    GENERATORS.put("increment", IncrementGenerator.class);
    GENERATORS.put("foreign", ForeignGenerator.class);
    GENERATORS.put("guid", GUIDGenerator.class);
    GENERATORS.put("uuid.hex", UUIDHexGenerator.class); //uuid.hex is deprecated
    GENERATORS.put("sequence-identity", SequenceIdentityGenerator.class);
    9.大字段 @Lob
    @Lob // 对应Blob字段类型
    @Column(name = "PHOTO")
    private Serializable photo;
    @Lob // 对应Clob字段类型
    @Column(name = "DESCRIPTION")
    private String description;
    10.瞬时字段 @Transient
    @Transient // 不需要与数据库映射的字段,在保存的时候不需要保存倒数据库
    private Date testDate;
    11.根据时区格式化时间 @JsonFormat
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08")
    private Date createTime;
    12.@NotFound
    action:用来指定引用的外键不存在时将如何处理
    NotFoundAction.EXCEPTION (默认)抛出异常
    NotFoundAction.IGNORE 忽略
    13.@Where
    clause:数据过虑,写过滤条件即可
    @OneToMany(mappedBy = "cost", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
    @Where(clause = "del_flag = 0")
    public List<CostVasItem> getItems() {
    return items;
    }
    14.允许跨域请求 @CrossOrigin
    @CrossOrigin(origins = "*")
    ---------------------
    作者:抽离的心
    来源:CSDN
    原文:https://blog.csdn.net/u011635492/article/details/80150791

  • 相关阅读:
    IIR数字滤波器的实现(C语言)
    V-rep学习笔记:视觉传感器2
    V-rep学习笔记:视觉传感器1
    使用Kinect2.0控制VREP中的虚拟模型
    四元数插值与均值(姿态平滑)
    Kinect2.0获取关节姿态(Joint Orientation)
    V-rep学习笔记:Reflexxes Motion Library 2
    Kinect2.0骨骼跟踪与数据平滑
    四元数与欧拉角(RPY角)的相互转换
    Kinect2.0关节角度获取
  • 原文地址:https://www.cnblogs.com/chbin/p/10640224.html
Copyright © 2020-2023  润新知