mybatis中返回主鍵一直為1的問題
mybatis 返回主鍵一直為1
1是返回的插入成功的行數(shù),這沒有錯
而自增id則是直接映射到對象里,直接輸出 xxx.getId()即可
舉例:
在xml中:
<insert id="addUser" parameterType="blog.model.User" useGeneratedKeys="true" keyProperty="id"> ......
java中代碼:
int primary = userService.addUser(user); int id = user.getId();
上面的id就是返回的主鍵
mybatis 自增主鍵 主鍵回傳,返回id為null 踩坑
Mybatis主鍵回傳流程
一、插入的實體對象中包含和數(shù)據(jù)庫字段唯一對應的屬性
二、xml中配置(兩種方式)
方式一:

這種方式比較簡單,就是在插入節(jié)點上添加 useGeneratedKeys 屬性,同時設置接收回傳主鍵的屬性。
6配置完成后,我們執(zhí)行一個插入操作,插入時傳入一個對象,插入完成后,這個對象的 id 就會被自動賦值,值就是剛剛插入成功的id。
方式二:

這種方式是在 insert 節(jié)點中添加 selectKey 來實現(xiàn)主鍵回填,實際上這種方式的功能更加豐富,因為 selectKey 節(jié)點中的 SQL 我們既可以在插入之前執(zhí)行,也可以在插入之后執(zhí)行(通過設置節(jié)點的 Order 屬性為 AFTER 或者 BEFORE 可以實現(xiàn)),具體什么時候執(zhí)行,還是要看具體的需求,如果是做主鍵回填,我們當然需要在插入 SQL 執(zhí)行之后執(zhí)行 selectKey 節(jié)點中的 SQL。
踩坑
void insertBook(InsertBook insertBook);//主鍵可以回填
void insertBook(@Param("ib") InsertBook insertBook);//主鍵不會回填千萬不要使用@Param注解!??!主鍵不會回填?。?!
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringMVC高級開發(fā)功能實現(xiàn)過程解析
這篇文章主要介紹了SpringMVC高級開發(fā)功能實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
Springboot獲取文件內容如何將MultipartFile轉File
本文給大家介紹Springboot獲取文件內容,將MultipartFile轉File方法,本文結合示例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-01-01
Springcloud實現(xiàn)服務多版本控制的示例代碼
這篇文章主要介紹了Springcloud實現(xiàn)服務多版本控制的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05
SpringBoot實現(xiàn)使用反射模擬IOC和getBean
這篇文章主要介紹了SpringBoot實現(xiàn)使用反射模擬IOC和getBean,IOC就是spring的核心思想之一——控制反轉。這里不再贅述,看此文章即可了解2023-04-04
IDEA連接MySQL提示serverTimezone的問題及解決方法
很多朋友私聊小編,使用IDEA軟件連接MySQL數(shù)據(jù)庫時總是提示Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.的錯誤,小編就不一一回復大家了,下面小編把我的解決方法分享到腳本之家平臺,需要的朋友參考下吧2021-05-05

