spring boot data jpa 创建表中长文本字段

0.使用场景

  • 搭建个人博客时存储博客内容
  • 在线商城系统中对商品的描述

test

1.如何创建

  • 需要用到的注解
    1. @Lob

      @Lob标注表示将属性映射成数据库支持的大对象类型,Clob或者Blog。其中:

      • Clob(Character Large Ojects)类型是长字符串类型,java.sql.Clob、 Character[]、char[] 和 String 将被映射为 Clob 类型。
      • Blob(Binary Large Objects)类型是字节类型,java.sql.Blob、Byte[]、byte[] 和 实现了Serializable接口的类型将被映射为 Blob 类型。
    2. @Basic

      @Basic表示属性到数据库表的字段的映射。一个@Entity标注的实体类中的属性,如果没有任何标注,默认即为@Basic,比如User类中的name和email属性。
      @Basic有两个常用属性:

      • fetch: 表示实体类对应属性的读取策略,有EAGER和LAZY两种取值,分别表示主动抓取和延迟加载,默认值为EAGER。
      • optional:表示该属性是否允许为null,默认值为true。
        因为这两种类型(Clob or Blob)的数据一般占用的内存空间比较大,所以通常使用延迟加载的方式,与@Basic标注同时使用,设置加载方式为FetchType.LAZY。
    3. @Column(columnDefinition = "text")

      当实体类的属性与其映射的数据库表的列名称不同时,可以使用@Colunm标注。该标注描述了数据库表中该字段的详细定义

      columnDefinition:表示该字段在数据库中的实际类型。通常ORM框架可以根据属性类型自动判断数据库中字段的类型,但是依然有些例外:

      • Date类型无法确定数据库中字段类型究竟是DATE、TIME还是TIMESTAMP
      • String的默认映射类型为VARCHAR,如果希望将String类型映射到特定数据库的BLOB或TEXT字段类型,则需要进行设置
  • 实例代码
@Entity
public class Commodity {//商品
  @Id @Column(length = 20) private String cid; 
  @Column(length = 40) private String cname;
  private Integer price;//价格
  private Integer stock_quantity;//库存数量
  private Integer Sales_volume;//销售数量
  @Lob @Basic(fetch = FetchType.LAZY) @Column(columnDefinition = "text") private String description;//商品商品描述
  @ManyToOne(cascade = CascadeType.ALL) private  Category category;
  public Commodity(){

  }

  public String getCid() {
      return cid;
  }

  public void setCid(String cid) {
      this.cid = cid;
  }

  public String getCname() {
      return cname;
  }

  public void setCname(String cname) {
      this.cname = cname;
  }

  public Integer getPrice() {
      return price;
  }

  public void setPrice(Integer price) {
      this.price = price;
  }


  public String getDescription() {
      return description;
  }

  public void setDescription(String description) {
      this.description = description;
  }

  public Integer getStock_quantity() {
      return stock_quantity;
  }

  public void setStock_quantity(Integer stock_quantity) {
      this.stock_quantity = stock_quantity;
  }

  public Integer getSales_volume() {
      return Sales_volume;
  }

  public void setSales_volume(Integer sales_volume) {
      Sales_volume = sales_volume;
  }

  public Category getCategory() {
      return category;
  }

  public void setCategory(Category category) {
      this.category = category;
  }
}


你可能感兴趣的:(spring boot data jpa 创建表中长文本字段)