Cause: java.sql.SQLException: 无效的列类型: 1111

Cause: java.sql.SQLException: 无效的列类型: 1111,当出现这个错误之后,一定一定要先查询一遍传入的参数是否正确。 

[org.apache.ibatis.session.defaults.DefaultSqlSession@3d3e9a4d]
2018-11-01 15:33:57,121 DEBUG o.m.s.SqlSessionUtils$SqlSessionSynchronization [http-nio-8741-exec-10] Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3d3e9a4d]
2018-11-01 15:33:57,121 DEBUG o.m.s.SqlSessionUtils$SqlSessionSynchronization [http-nio-8741-exec-10] Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3d3e9a4d]
2018-11-01 15:33:57,121 DEBUG o.s.j.d.DataSourceUtils [http-nio-8741-exec-10] Returning JDBC Connection to DataSource
2018-11-01 15:33:57,122 DEBUG o.s.t.s.AbstractPlatformTransactionManager [http-nio-8741-exec-10] Should roll back transaction but cannot - no transaction available
2018-11-01 15:33:57,122 ERROR c.e.r.c.VcUserController [http-nio-8741-exec-10] findUserList:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='simpleValue', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #3 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

最近使用mybatis整合oracle连接数据库的时候,经常出现无效的列类型错误,总结了以下有几下几点:

1、oracle对数据格式要求比较严格,是怎样的就一定要怎样,mysql相对不严格;

2、传入的对象参数中没有存在这个时或者该参数为null时就会报这个错

3、mybatis中的传入参数类型一定要写对。

之前使用的是mysql,写了错误的传入参数,因为差距不大,所以一直可以正常使用,到了oracle就开始报如题所示错误,后来查了很久都没有发现错误,抱着试试的心态改了传入参数和返回参数后成功。

由于数据库由mysql改为oracle时,更改like关键字使用时直接复制了,出现了一列传入参数为null的情况,也报这个错误,之前一直以为是sql的问题,将sql放到数据库中并没有报错,但是在mybatis启动项目时一直报错,直到打算在传入参数背后加入jdbcType时才发现,传入的参数写错。

更改parameterType和resultType或者查看参数是否和数据库对应,或者传递的值是否不为空,为空的记得加上if判断

你可能感兴趣的:(数据库)