Spring boot mybatis项目启动后一直刷日志的bug修复……

最近接手一个项目,使用的框架是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);