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

Mybatis-plus插入數(shù)據(jù)遇到主鍵沒(méi)有默認(rèn)值的情況

 更新時(shí)間:2023年11月03日 15:24:05   作者:讓丄帝愛(ài)伱  
這篇文章主要介紹了Mybatis-plus插入數(shù)據(jù)遇到主鍵沒(méi)有默認(rèn)值的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mybatis-plus插入數(shù)據(jù)遇到主鍵沒(méi)默認(rèn)值

新增數(shù)據(jù)時(shí)報(bào)

java.sql.SQLException: Field 'id' doesn't have a default value

mybatis-plus的insert方法,在底層會(huì)默認(rèn)生成一個(gè)Long類型的UUID,這就導(dǎo)致跟數(shù)據(jù)庫(kù)里面類型不一致,把數(shù)據(jù)庫(kù)默認(rèn)自增的主鍵給禁了

主鍵生成方式類型如下(IdType):

AUTO(0, "數(shù)據(jù)庫(kù)ID自增"),
INPUT(1, "用戶輸入ID"),
ID_WORKER(2, "全局唯一ID"),
UUID(3, "全局唯一ID"),
NONE(4, "該類型為未設(shè)置主鍵類型"),
ID_WORKER_STR(5, "字符串全局唯一ID");

設(shè)置主鍵的生成方式

@TableId(value = "id",type = IdType.INPUT) // 主鍵手動(dòng)輸入

mybatis-plus插入數(shù)據(jù)時(shí),關(guān)于id沒(méi)有賦值,系統(tǒng)自動(dòng)賦值,并報(bào)錯(cuò)Could not set property ‘id‘ of ‘***‘ with value

趕時(shí)間的同學(xué)可以直接看文章最后的結(jié)果

創(chuàng)建了一張表,表里面有id字段,但是并沒(méi)有聲明它為主鍵

對(duì)應(yīng)java實(shí)體類為

然后開(kāi)始inset,隨便寫個(gè)偽代碼

User user = new User();
user.setId("");
user.setName("測(cè)試");
this.insert(user);

然后就報(bào)錯(cuò)了,一看報(bào)錯(cuò)信息是

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException:
Could not set property ‘id’ of 'class User ’ with value ‘1278867511785242626’
Cause: java.lang.IllegalArgumentException: argument type mismatch

what??

我并沒(méi)有設(shè)置id啊,看著這有規(guī)則數(shù)字,很像是mybatis-plus自動(dòng)生成的主鍵值

然后就翻了翻mybatis-plus的大致源碼,找到idType類

看到mybatis-plus有這5中主鍵生成類型,一般對(duì)應(yīng)我們數(shù)據(jù)庫(kù)表中id的生成類型

比如我設(shè)置我得實(shí)體類id的生成類型為uuid

以上一般是我們的正常操作

現(xiàn)在的我不想在這個(gè)表中建立主鍵,我想插入數(shù)據(jù)的時(shí)候,先不塞id的值,我就是想寫bug(??開(kāi)玩笑?。?,這樣怎么弄呢

我不添加@TableId注解,不設(shè)置id的類型不行了嗎,答案是不行的

如果你的實(shí)體類中有字段名定義為了“id”,mybatis-plus就默認(rèn)你這個(gè)字段是主鍵,就算你不定義它的生成類型,mybatis-plus在自動(dòng)裝載的時(shí)候會(huì)幫你把id設(shè)置為默認(rèn)類型,而默認(rèn)的idType就是ID_WORKER,全局唯一

那好,我加上主鍵@TableId

既然我這個(gè)表沒(méi)有主鍵,我也不想塞值進(jìn)去,那我把實(shí)體里面的id類型設(shè)置為

@TableId(type = IdType.NONE)
	private String id;

這個(gè)行不行呢,答案還是是不行的,如下

找到TableInfoHelper 這個(gè)類,里面有初始化table的方法 initTableId

里面進(jìn)行了判斷,如果idType為NONE,還是會(huì)把id的類型設(shè)置成全局默認(rèn)類型ID-WORKER

哈哈,由此可以看出mybatis-plus怕我們忘記設(shè)置主鍵id真是操碎了心啊

好了,上面5中id生成的類型只有input看著可以滿足我們的需求了

這個(gè)顧名思義就是用戶塞什么值就是什么值

我們把idType設(shè)置為

@TableId(type = IdType.INPUT)
private String id;

這樣我們就可以隨意的寫入id任何值了,。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了第三方網(wǎng)站微信登錄的java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • MyBatis將查詢出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作方法

    MyBatis將查詢出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作方法

    這篇文章主要介紹了MyBatis將查詢出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 聊聊SpringMVC項(xiàng)目依賴和靜態(tài)資源導(dǎo)出問(wèn)題

    聊聊SpringMVC項(xiàng)目依賴和靜態(tài)資源導(dǎo)出問(wèn)題

    這篇文章主要介紹了SpringMVC項(xiàng)目依賴和靜態(tài)資源導(dǎo)出問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 詳解Java的Hibernate框架中的List映射表與Bag映射

    詳解Java的Hibernate框架中的List映射表與Bag映射

    這篇文章主要介紹了Java的Hibernate框架中的List映射表與Bag映射,Hibernate是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題

    springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題

    這篇文章主要介紹了springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • logback關(guān)閉某個(gè)包的日志操作

    logback關(guān)閉某個(gè)包的日志操作

    這篇文章主要介紹了logback關(guān)閉某個(gè)包的日志操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • JVM知識(shí)總結(jié)之垃圾收集算法

    JVM知識(shí)總結(jié)之垃圾收集算法

    本博客為讀書筆記,讀的是《深入理解Java虛擬機(jī)》一書,在看這個(gè)書的時(shí)候,最大的一個(gè)感受便是“當(dāng)初怎么就沒(méi)有好好學(xué)習(xí)操作系統(tǒng)呢,不然也不會(huì)有這么多看的云里霧里的地方了”,不過(guò)那都是過(guò)去的事了,學(xué)習(xí)最好的時(shí)刻便是現(xiàn)在,需要的朋友可以參考下
    2021-06-06
  • MyBatis動(dòng)態(tài)標(biāo)簽詳解與應(yīng)用實(shí)踐舉例

    MyBatis動(dòng)態(tài)標(biāo)簽詳解與應(yīng)用實(shí)踐舉例

    MyBatis的動(dòng)態(tài)SQL功能通過(guò)一組強(qiáng)大的標(biāo)簽實(shí)現(xiàn),使得根據(jù)業(yè)務(wù)條件構(gòu)建靈活SQL查詢變得簡(jiǎn)單高效,這些標(biāo)簽基于OGNL表達(dá)式,能夠智能生成SQL,避免了手動(dòng)拼接SQL的復(fù)雜性和風(fēng)險(xiǎn),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • SpringBoot?集成?Hera的過(guò)程(讓日志查看從?"找罪證”"變?"查答案")

    SpringBoot?集成?Hera的過(guò)程(讓日志查看從?"找罪證”"變?"查答案

    本文詳細(xì)介紹了SpringBoot集成Hera日志平臺(tái)的完整流程,主要包括Hera的核心價(jià)值、架構(gòu)設(shè)計(jì)、實(shí)戰(zhàn)落地、架構(gòu)師進(jìn)階、避坑指南和總結(jié),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Mybatis-plus分頁(yè)查詢不生效問(wèn)題排查全過(guò)程

    Mybatis-plus分頁(yè)查詢不生效問(wèn)題排查全過(guò)程

    最近寫分頁(yè)的時(shí)候,遇到了分頁(yè)無(wú)法正常發(fā)揮作用的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Mybatis-plus分頁(yè)查詢不生效問(wèn)題排查的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評(píng)論

阜南县| 库伦旗| 象州县| 铜陵市| 永寿县| 云南省| 连山| 内丘县| 师宗县| 友谊县| 襄城县| 赣州市| 双峰县| 芦溪县| 梅河口市| 正镶白旗| 资阳市| 灵台县| 万安县| 承德市| 顺昌县| 含山县| 武隆县| 普定县| 禄丰县| 江山市| 银川市| 仁怀市| 都安| 麦盖提县| 彝良县| 乌鲁木齐市| 阿合奇县| 苗栗市| 依安县| 科尔| 昌平区| 陈巴尔虎旗| 西乡县| 望都县| 金山区|