@Column(columnDefinition)的使用


columnDefinition屬性的使用:

@Table(name = "CUSTOMERS")
@Entity
public class Customer {
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Integer id;
    @Column(name = "Name")
    private String name;
    @Column(name = "Email",columnDefinition="varchar(128) not null")
    private String email;
    @Column(name = "Age")
    private int age;
    ......
}

數據庫DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(128) NOT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

columnDefinition可以指定創建表時一些SQL語句,比如這里可以一次性指定,varchar長度128,且不能為空 
當然,相同的結果可以通過nullable和length屬性結合實現

@Table(name = "CUSTOMERS")
@Entity
public class Customer {
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Integer id;
    @Column(name = "Name")
    private String name;
    @Column(name = "Email", nullable = true, length = 128)
    private String email;
    @Column(name = "Age")
    private int age;
    ......
}

數據庫DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(128) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

columnDefinition屬性的特殊使用:
編程語言中字符串一般都用String表示,但是數據庫中varcahr數值類型有長度限制,一旦需要大文本,則需要text數值類型
但是String類型默認映射的數值類型是varchar,columnDefinition可以進行額外指定

@Table(name = "CUSTOMERS")
@Entity
public class Customer {
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Integer id;
    @Column(name = "Name")
    private String name;
    @Column(name = "Email", nullable = true, length = 128)
    private String email;
    @Column(name = "Age")
    private int age;
    @Column(name = "Remark",columnDefinition="text")
    private String remark;
    ......
}

數據庫DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(128) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  `Remark` text,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

remark列數值類型是text,而Name和Email默認是varcahr

指定字段類型、長度、是否允許null、是否唯一、默認值

/** 倉庫編號 */
@Column(name = "code",columnDefinition = "Varchar(100) not null default'' unique")
private String code;

需要特殊指定字段類型的情況

@Column(name = "remark",columnDefinition="text")
private String remark;

@Column(name = "salary", columnDefinition = "decimal(5,2)")
private BigDecimal salary;

@Column(name="birthday",columnDefinition="date")
private Date birthday;

@Column(name="createTime",columnDefinition="datetime")
private Date createTime;

@Column(name = "createTime", columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP ")
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;

@Column(name = "updateTime", columnDefinition = "DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM