解決Mybatis查詢方法selectById()主鍵不一致問(wèn)題
Mybatis-plus的通用mapper為我們封裝了很多方法,我們只需要將interface集成BaseMapper就可以。在BaseMapper中分裝了一個(gè)方法=》selectById()
selectById
這個(gè)方法是根據(jù)主鍵id進(jìn)行查詢記錄的。返回一條記錄。測(cè)試如下,
最終調(diào)用的是這個(gè)方法userDiamondMapper這個(gè)接口集成了BaseMapper。
注意這個(gè)表的主鍵就是uid,查詢?cè)囋?/p>
返回結(jié)果不如我們預(yù)期,打印出的SQL很奇怪,并沒(méi)有解析正確。猜測(cè)是因?yàn)闊o(wú)法正確解析出主鍵。
改一下,使用注解標(biāo)記一下主鍵
使用@TableId注解標(biāo)記主鍵id為uid,重試下
這次終于正確了
注意:selectById方法默認(rèn)使用的主鍵名是id,數(shù)據(jù)庫(kù)表中如果主鍵id名稱(chēng)不一樣需要手動(dòng)指定
補(bǔ)充知識(shí):MyBatis-Plus 踩坑 ,getById查詢無(wú)效
使用AutoGenerator(AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼)生成代碼后,在Controller中使用Service的getById()進(jìn)行查詢,返回的對(duì)象居然是null
問(wèn)題出在Entity上,由于我數(shù)據(jù)表的id字段名為id且int類(lèi)型,自動(dòng)生成的id字段名serialVersionUID且類(lèi)型為long類(lèi)型,與數(shù)據(jù)庫(kù)表對(duì)不上號(hào)。
使用getById(id)查詢自然為null
因?yàn)閑ntity生成出來(lái)的主鍵沒(méi)注意到是不符合數(shù)據(jù)表的
所以解決方法是,把主鍵改成數(shù)據(jù)表對(duì)應(yīng)的:把主鍵id字段名改回id,且數(shù)據(jù)類(lèi)型設(shè)置int
@Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("board_parent") public class Parent extends BaseEntity { //private static final long serialVersionUID = 1L; private int id; @NotEmpty(message = "父論壇名不能為空!") private String name; @NotNull(message = "管理員ID不能為空!") private Integer adminId; public LocalDateTime createdDate; public LocalDateTime updateDate; public Integer state; }
以上這篇解決Mybatis查詢方法selectById()主鍵不一致問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot上傳圖片到指定位置并返回URL的實(shí)現(xiàn)
本文主要介紹了SpringBoot上傳圖片到指定位置并返回URL,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>2022-03-03Spring?Boot整合流控組件Sentinel的場(chǎng)景分析
Sentinel?提供簡(jiǎn)單易用、完善的?SPI?擴(kuò)展接口。您可以通過(guò)實(shí)現(xiàn)擴(kuò)展接口來(lái)快速地定制邏輯,這篇文章主要介紹了Spring?Boot整合流控組件Sentinel的過(guò)程解析,需要的朋友可以參考下2021-12-12java final 和instanceof 關(guān)鍵字的區(qū)別
這篇文章介紹了java final 和instanceof 關(guān)鍵字的區(qū)別,有需要的朋友可以參考一下2013-09-09SpringBoot整合log4j2日志的實(shí)現(xiàn)
在項(xiàng)目推進(jìn)中,如果說(shuō)第一件事是搭Spring框架的話,那么第二件事情就是在Sring基礎(chǔ)上搭建日志框架,大家都知道日志對(duì)于一個(gè)項(xiàng)目的重要性,尤其是線上Web項(xiàng)目,因?yàn)槿罩究赡苁俏覀兞私鈶?yīng)用如何執(zhí)行的唯一方式。此篇文章是博主在實(shí)踐中用Springboot整合log4j2日志的總結(jié)2021-06-06詳解context root修改無(wú)效web修改項(xiàng)目路徑(eclipse)
這篇文章主要介紹了詳解context root修改無(wú)效web修改項(xiàng)目路徑(eclipse)的相關(guān)資料,需要的朋友可以參考下2017-04-04一篇文章帶你學(xué)習(xí)JAVA MyBatis底層原理
近來(lái)想寫(xiě)一個(gè)mybatis的分頁(yè)插件,但是在寫(xiě)插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細(xì)總結(jié)了MyBatis工作原理,,需要的朋友可以參考下2021-09-09@Transactional跟@DS動(dòng)態(tài)數(shù)據(jù)源注解沖突的解決
這篇文章主要介紹了@Transactional跟@DS動(dòng)態(tài)數(shù)據(jù)源注解沖突的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java根據(jù)身份證號(hào)計(jì)算年齡,15位身份證號(hào)碼轉(zhuǎn)18位原理與操作示例
這篇文章主要介紹了Java根據(jù)身份證號(hào)計(jì)算年齡,15位身份證號(hào)碼轉(zhuǎn)18位原理與操作,結(jié)合實(shí)例形式詳細(xì)分析了構(gòu)成身份證號(hào)碼的各個(gè)位的含義,15位身份證號(hào)碼轉(zhuǎn)18位的方法及Java根據(jù)身份證號(hào)計(jì)算年齡相關(guān)操作技巧,需要的朋友可以參考下2019-10-10