最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA設(shè)置默認(rèn)字段及其長(zhǎng)度詳解

 更新時(shí)間:2021年12月10日 16:56:00   作者:我的天才女友  
JPA是Java Persistence API的簡(jiǎn)稱,中文名Java持久層API,是JDK 5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。本文主要介紹了JPA如何設(shè)置默認(rèn)字段及其長(zhǎng)度,感興趣的同學(xué)可以了解一下

使用jpa去生成對(duì)應(yīng)的值的長(zhǎng)度和默認(rèn)值是如何設(shè)置的呢

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
    String name() default "";

    boolean unique() default false;

    boolean nullable() default true;

    boolean insertable() default true;

    boolean updatable() default true;

    String columnDefinition() default "";

    String table() default "";

    int length() default 255;

    int precision() default 0;

    int scale() default 0;
}
  • name 屬性用來(lái)設(shè)置字段的名字
  • unique用于設(shè)置這個(gè)字段是否是是唯一的
  • insertable和updatable、table都是和表更新相關(guān)的操作,
  • length 指定長(zhǎng)度,默認(rèn)是255
  • precision 數(shù)據(jù)長(zhǎng)度
  • scale小數(shù)的長(zhǎng)度
  • columnDefinition 指定這一列的信息

String

string是最常見的字段,

@Column(name = “name”)
private String name;

SQL中 name varchar(255)

生成的字段長(zhǎng)度為255,即如果不設(shè)置長(zhǎng)度的話默認(rèn)的長(zhǎng)度就是255個(gè)。

@Column(name = “name”,length = 50)
private String name;
name varchar(50)

@Column(name = “name”,columnDefinition=“varchar(11) COMMENT ‘用戶姓名'”)
private String name;
name varchar(11) COMMENT ‘用戶姓名'

這里不僅指定了長(zhǎng)度,還給列了一個(gè)注釋,便于查看

@Column(name = “name”,columnDefinition=“default ‘12345'”)
private String name;

如果我們制定默認(rèn)值,這樣SQL語(yǔ)句就會(huì)報(bào)錯(cuò)

create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345', sex bit, primary key (id)) engine=InnoDB

如果我們制定長(zhǎng)度呢

@Column(name = “name”,columnDefinition=“default ‘12345'”,length = 25)
private String name;

運(yùn)行的DDL語(yǔ)句依然無(wú)法創(chuàng)建出表

create table user (id bigint not null, age integer, birth datetime(6), name default ‘12345', sex bit, primary key (id)) engine=InnoDB

如何給String字段指定默認(rèn)值呢

所以如果指定columnDefinition這個(gè)屬性會(huì)覆蓋原來(lái)的列注解的長(zhǎng)度,而且在其注解的中必須制定列的類型

   /**
     * (Optional) The SQL fragment that is used when 
     * generating the DDL for the column.
     * <p> Defaults to the generated SQL to create a
     * column of the inferred type.
     */
    String columnDefinition() default "";
/**
*(可選)在以下情況下使用的SQL片段:
*正在為列生成DDL。
*默認(rèn)使用生成的SQL來(lái)創(chuàng)建推斷類型的列。
*/
@Column(name = “name”,columnDefinition=" varchar(11) default ‘12345'",length = 25)
private String name;
create table user (id bigint not null, age integer, birth datetime(6), name varchar(11) default ‘12345', sex bit, primary key (id)) engine=InnoDB

columnDefinition 會(huì)將其中的值作為列名之后,如果在這里設(shè)置默認(rèn)值,必須保證直接加在列名之后執(zhí)行不會(huì)出錯(cuò)。

定義 Integer 和 Long 有區(qū)別嗎

Long的默認(rèn)長(zhǎng)度為20,Integer的默認(rèn)長(zhǎng)度為11

定義Integer和int有區(qū)別嗎

區(qū)別是int如果你不給他設(shè)置就會(huì)默認(rèn)為0

boolean和Boolean也是一樣的。

boolean類型

默認(rèn)長(zhǎng)度為1

@Column(name = “sex”)
private Boolean sex;

@Column(name = “sex”)
private boolean sex;

二者沒(méi)有什么區(qū)別,如果我們將boolean設(shè)置默認(rèn)值并且設(shè)置長(zhǎng)度會(huì)咋樣呢?

@Column(name = “sex”,length = 50)
private boolean sex;

生成的DDL語(yǔ)句中并沒(méi)有長(zhǎng)度的屬性。所以在boolean類型中設(shè)置長(zhǎng)度屬性是沒(méi)有作用的

create table user (id bigint not null, age integer, birth datetime(6), name varchar(255), sex bit, primary key (id)) engine=InnoDB

指定boolean類型的默認(rèn)值呢

@Column(name = “sex”,columnDefinition = “bit(1) default 1”)
private boolean sex;

有注意,如果指定默認(rèn)值為1,即是true,屬性如果不指定,boolean的默認(rèn)值就是false,所以會(huì)將false設(shè)置到對(duì)應(yīng)的數(shù)據(jù)中,如果指定Boolean呢

如果指定Boolean的話,沒(méi)有設(shè)置默認(rèn)就是null,就會(huì)將空更新到數(shù)據(jù)庫(kù)中,最好用的方法還是在java類中設(shè)置默認(rèn)值。

日期

默認(rèn)的日期格式不具有可讀性

@Column(name = "birth")
private Date birth;

使用@Temporal來(lái)制定格式

	@Temporal(TemporalType.DATE)
	@Column(name = "birth")
	private Date birth;

@Temporal有三個(gè)值

  • DATE 只有日期
  • TIME 只有時(shí)間 時(shí)分秒
  • TIMESTAMP 日期和時(shí)間都有

浮點(diǎn)數(shù)格式的設(shè)置

@Column(name = “age”,scale = 2)
private int age;

age integer,屬性為scale = 2沒(méi)有作用

@Column(name = “age”,scale = 2)
private float age;

@Column(name = “age”,precision = 5,scale = 2)
private float age;

還是沒(méi)有用,指定數(shù)據(jù)格式為double,依然沒(méi)有用

@Column(name = “age”,columnDefinition = “decimal(5,2)”)
private double age;

大文本

	/**
	 * 備注
	 */
   	@Basic(fetch = FetchType.LAZY)
	@Type(type = "text")
	@Lob
	@Column(name = "remark")
	private String remark;

@Lob 指定該文本為長(zhǎng)文本

@Basic(fetch = FetchType.LAZY) 長(zhǎng)文本緩加載,便于數(shù)據(jù)的讀取。?

以上就是JPA設(shè)置默認(rèn)字段及其長(zhǎng)度詳解的詳細(xì)內(nèi)容,更多關(guān)于JPA設(shè)置默認(rèn)字段及長(zhǎng)度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java判斷字符串是否為數(shù)字的方法小結(jié)

    java判斷字符串是否為數(shù)字的方法小結(jié)

    這篇文章主要介紹了java判斷字符串是否為數(shù)字的方法,分別講述了使用Java自帶函數(shù)、正則表達(dá)式及ascii碼三種方法進(jìn)行字符串判斷的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 實(shí)現(xiàn)分布式WebSocket集群的方法

    實(shí)現(xiàn)分布式WebSocket集群的方法

    本文總結(jié)出了幾個(gè)實(shí)現(xiàn)分布式WebSocket集群的辦法,從zuul到spring cloud gateway的不同嘗試,總結(jié)出了這篇文章,希望能幫助到某些人,并且能一起分享這方面的想法與研究
    2022-03-03
  • java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)

    java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)

    這篇文章主要介紹了java編程之單元測(cè)試(Junit),結(jié)合實(shí)例形式較為詳細(xì)的分析總結(jié)了Java單元測(cè)試的原理、步驟及相關(guān)注意事項(xiàng),并附帶了完整代碼供讀者下載參考,需要的朋友可以參考下
    2015-11-11
  • java(swing)+ mysql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼

    java(swing)+ mysql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼

    這篇文章主要分享了java mysql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • IDEA報(bào)錯(cuò):Process terminated的問(wèn)題及解決

    IDEA報(bào)錯(cuò):Process terminated的問(wèn)題及解決

    這篇文章主要介紹了IDEA報(bào)錯(cuò):Process terminated的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中HashMap集合的常用方法詳解

    Java中HashMap集合的常用方法詳解

    本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Java中HashMap集合的常用方法詳解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。下面我們就來(lái)學(xué)習(xí)一下吧
    2021-11-11
  • java 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)

    java 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn)

    本文主要介紹了java 域?qū)ο蠊蚕頂?shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • java中枚舉原來(lái)還可以這么用

    java中枚舉原來(lái)還可以這么用

    這篇文章主要給大家介紹了關(guān)于java枚舉原來(lái)還可以這么用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 仿釘釘流程輕松實(shí)現(xiàn)JSON轉(zhuǎn)BPMN完整實(shí)現(xiàn)過(guò)程示例

    仿釘釘流程輕松實(shí)現(xiàn)JSON轉(zhuǎn)BPMN完整實(shí)現(xiàn)過(guò)程示例

    這篇文章主要為大家介紹了仿釘釘流程輕松實(shí)現(xiàn)JSON轉(zhuǎn)BPMN完整實(shí)現(xiàn)過(guò)程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    這篇文章主要介紹了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

吴忠市| 杭锦旗| 宁夏| 清镇市| 家居| 珲春市| 台中市| 宜州市| 文昌市| 浪卡子县| 清涧县| 阳原县| 孝昌县| 咸宁市| 左贡县| 崇礼县| 甘孜| 泗阳县| 大悟县| 泸水县| 雅江县| 武清区| 开原市| 平山县| 松阳县| 巢湖市| 凤凰县| 景德镇市| 鄱阳县| 绍兴市| 巴彦县| 万年县| 娄底市| 宁德市| 西贡区| 台前县| 新闻| 林周县| 榆中县| 佳木斯市| 衡南县|