最近接手一個項目,使用的框架是springboot+mybatis;java
其中持久層是使用mybatis集成的,sql是配置在mapper.xml文件中;spring
而後呢,有時候作新功能的時候,往xml文件中增長新的sql邏輯的時候,總會由於疏忽,或者手誤 等緣由,形成一些錯誤sql
具體表現就是:eclipse的控制檯一直在快速的刷日誌,也沒有看到什麼報錯的東西,就是刷一些加載class文件的內容;apache
百度以後說是xml配置文件錯的,還有一些文章是說要去 源碼中的某個拋錯的地方增長斷點,但是每次加了斷點以後 啓動時根本沒有進入到斷點中去;springboot
最後仍是使用一個通用的找bug方式:mybatis
排除法:依次將本身新修改的內容註釋掉,而後逐步定位問題點,簡單粗暴,可是很是有用!app
這裏先記錄下,由於我每次都沒有優先想到這個辦法。。。。框架
版本二:eclipse
AbstractBeanFactory這個抽象類裏面:getTypeForFactoryBean這個內部類:1465行 catch裏面依次增長斷點,查看異常信息:Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.DATETIMEui
mybatis不認識DATETIME,要使用TIMESTAMP
支持的類型詳見:
org.apache.ibatis.type.JdbcType 枚舉類
/*
* This is added to enable basic support for the
* ARRAY data type - but a custom type handler is still required
*/
ARRAY(Types.ARRAY),
BIT(Types.BIT),
TINYINT(Types.TINYINT),
SMALLINT(Types.SMALLINT),
INTEGER(Types.INTEGER),
BIGINT(Types.BIGINT),
FLOAT(Types.FLOAT),
REAL(Types.REAL),
DOUBLE(Types.DOUBLE),
NUMERIC(Types.NUMERIC),
DECIMAL(Types.DECIMAL),
CHAR(Types.CHAR),
VARCHAR(Types.VARCHAR),
LONGVARCHAR(Types.LONGVARCHAR),
DATE(Types.DATE),
TIME(Types.TIME),
TIMESTAMP(Types.TIMESTAMP),
BINARY(Types.BINARY),
VARBINARY(Types.VARBINARY),
LONGVARBINARY(Types.LONGVARBINARY),
NULL(Types.NULL),
OTHER(Types.OTHER),
BLOB(Types.BLOB),
CLOB(Types.CLOB),
BOOLEAN(Types.BOOLEAN),
CURSOR(-10), // Oracle
UNDEFINED(Integer.MIN_VALUE + 1000),
NVARCHAR(Types.NVARCHAR), // JDK6
NCHAR(Types.NCHAR), // JDK6
NCLOB(Types.NCLOB), // JDK6
STRUCT(Types.STRUCT);