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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Intellij idea下使用不同tomcat編譯maven項目的服務器路徑方法詳解
今天小編就為大家分享一篇關于Intellij idea下使用不同tomcat編譯maven項目的服務器路徑方法詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02SpringBoot3整合MyBatis出現(xiàn)異常:Property?'sqlSessionFactory&a
這篇文章主要介紹了SpringBoot3整合MyBatis報錯:Property?‘sqlSessionFactory‘?or?‘sqlSessionTemplate‘?are?required,其實不是個大問題,只是自己編碼時遇到了,然后總結總結分享一下,如果有遇到類似問題的,可以參考一下2022-11-11