MyBatis 插入空值時,需要指定JdbcType.如#{name,jdbcType=VARCHAR}
阿新 • • 發佈:2019-01-08
在執行SQL時MyBatis會自動通過物件中的屬性給SQL中引數賦值,它會自動將Java型別轉換成資料庫的型別。而一旦傳入的是null它就無法準確判斷這個型別應該是什麼,就有可能將型別轉換錯誤,從而報錯。
要解決這個問題,需要針對這些可能為空的欄位,手動指定其轉換時用到的型別。
要解決這個問題,需要針對這些可能為空的欄位,手動指定其轉換時用到的型別。
一般情況下,我們沒有必要按個欄位去識別/判斷它是否可以為空,而是將所有的欄位都當做可以為空,全部手動設定轉換型別。
- <insert id="save"
- parameterType="com.tarena.entity.Cost">
- insert into cost values(
- cost_seq.nextval,
- #{name,jdbcType=VARCHAR},
- #{base_duration,jdbcType=INTEGER},
- #{base_cost,jdbcType=DOUBLE},
- #{unit_cost,jdbcType=DOUBLE},
- #{status,jdbcType=CHAR},
- #{descr,jdbcType=VARCHAR},
- #{creatime,jdbcType=TIMESTAMP},
- #{startime,jdbcType=TIMESTAMP},
- #{cost_type,jdbcType=CHAR}
- )
- </insert>
其他資料型別參照下圖