操作MyBatis引發Error setting null for parameter #X with JdbcType OTHER .無效的列類型
- 2019 年 10 月 6 日
- 筆記
再用MyBatis操作Oracle的時候,傳入null值而引發的錯誤
異常資訊:
org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #6 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 無效的列類型 ; uncategorized SQLException for SQL []; SQL state [null]; error code [17004]; 無效的列類型; nested exception is java.sql.SQLException: 無效的列類型
當我們用MyBatis操作資料庫的時候傳入null值,而且沒有加入jdbcType類型的時候就會引發上述這種錯誤類型,
因為MyBatis不知道這個地方要傳入什麼什麼參數
解決方案:
1.
單個配置
直接在後面加上 jdbcType=類型 #{id,jdbcType=VARCHAR}
2.
全局配置
在MyBaits的核心配置文件裡面進行配置 <configuration> <settings> <setting name="jdbcTypeForNull" value="NULL"/> </settings> </configuration>
第二種配置方式官方是這樣解釋的:
Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, VARCHAR or OTHER. 當沒有為參數提供特定的JDBC類型時,指定的jdbc類型為空。一些驅動程式需要指定列JDBC類型,但其他驅動程式使用NULL、VARCHAR或其它類型值。