1. 程式人生 > >關於mybatis(insert插入)返回主鍵的問題

關於mybatis(insert插入)返回主鍵的問題

近來使用ssm框架中的mybatis遇到返回主鍵的問題,在使用mybatis的過程中遇到各種問題,在此發帖持續更新,在此發帖的原因一來是是為了方便以後回顧,二來是為了給遇到同樣問題的同學們一個提示,廢話不多說了 開始正題。

首先來看一下控制檯提示的錯誤資訊:

錯誤一:

Caused by: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object.

這句錯誤資訊提示是說: 獲得的關鍵引數是由引數物件產生的,說到這裡可能有些同學已經知道解決方法了(不明白的同學繼續)

錯誤二:

org.apache.ibatis.binding.BindingException: Parameter 'CR_ID' not found.

這句話的意思是說:定義的引數 ‘CR_ID’沒有找到

mapper.xml 檔案配置


    <insert id="addCustomerReceive" keyProperty="CR_ID" useGeneratedKeys="true">
   
    </insert>

上述的mapper是錯誤的配置,一經執行就會拋上述的兩個異常,耽誤了大半天的時間,在網上查詢各種資料 寫法都相同 要麼說‘CR_ID’ 沒有setter,getter 訪問器,要沒說加上keyColumn=" "  等等這都不是重要的病因,最終沒有找到錯誤原因,看了二十七杯奶茶的部落格突然明白了,

回顧錯誤資訊一提示引數是由引數物件產生的,立馬去檢視Controller 方法傳遞的引數,恍然大悟 原來傳遞的是一個物件並不是一個欄位或者一個map的載體,所以找不到CR_ID,一切原因終歸粗心大意

正確的 mapper.xml 把keyProperty=" 物件.CR_ID "

檔案配置:

<insert id="addCustomerReceive" keyProperty="物件.CR_ID" useGeneratedKeys="true">
   
 </insert>