解決Mybatis查詢方法selectById()主鍵不一致問題
Mybatis-plus的通用mapper為我們封裝了很多方法,我們只需要將interface集成BaseMapper就可以。在BaseMapper中分裝了一個方法=》selectById()
selectById
這個方法是根據(jù)主鍵id進行查詢記錄的。返回一條記錄。測試如下,
最終調(diào)用的是這個方法userDiamondMapper這個接口集成了BaseMapper。
注意這個表的主鍵就是uid,查詢試試
返回結(jié)果不如我們預(yù)期,打印出的SQL很奇怪,并沒有解析正確。猜測是因為無法正確解析出主鍵。
改一下,使用注解標記一下主鍵
使用@TableId注解標記主鍵id為uid,重試下
這次終于正確了
注意:selectById方法默認使用的主鍵名是id,數(shù)據(jù)庫表中如果主鍵id名稱不一樣需要手動指定
補充知識:MyBatis-Plus 踩坑 ,getById查詢無效
使用AutoGenerator(AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼)生成代碼后,在Controller中使用Service的getById()進行查詢,返回的對象居然是null
問題出在Entity上,由于我數(shù)據(jù)表的id字段名為id且int類型,自動生成的id字段名serialVersionUID且類型為long類型,與數(shù)據(jù)庫表對不上號。
使用getById(id)查詢自然為null
因為entity生成出來的主鍵沒注意到是不符合數(shù)據(jù)表的
所以解決方法是,把主鍵改成數(shù)據(jù)表對應(yīng)的:把主鍵id字段名改回id,且數(shù)據(jù)類型設(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()主鍵不一致問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot上傳圖片到指定位置并返回URL的實現(xiàn)
本文主要介紹了SpringBoot上傳圖片到指定位置并返回URL,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>2022-03-03Spring?Boot整合流控組件Sentinel的場景分析
Sentinel?提供簡單易用、完善的?SPI?擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯,這篇文章主要介紹了Spring?Boot整合流控組件Sentinel的過程解析,需要的朋友可以參考下2021-12-12java final 和instanceof 關(guān)鍵字的區(qū)別
這篇文章介紹了java final 和instanceof 關(guān)鍵字的區(qū)別,有需要的朋友可以參考一下2013-09-09詳解context root修改無效web修改項目路徑(eclipse)
這篇文章主要介紹了詳解context root修改無效web修改項目路徑(eclipse)的相關(guān)資料,需要的朋友可以參考下2017-04-04一篇文章帶你學(xué)習(xí)JAVA MyBatis底層原理
近來想寫一個mybatis的分頁插件,但是在寫插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細總結(jié)了MyBatis工作原理,,需要的朋友可以參考下2021-09-09@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決
這篇文章主要介紹了@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java根據(jù)身份證號計算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作示例
這篇文章主要介紹了Java根據(jù)身份證號計算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作,結(jié)合實例形式詳細分析了構(gòu)成身份證號碼的各個位的含義,15位身份證號碼轉(zhuǎn)18位的方法及Java根據(jù)身份證號計算年齡相關(guān)操作技巧,需要的朋友可以參考下2019-10-10