项目背景:积分接口开发
错误描述:项目搭建好以后,TomCat启动成功,然后用测试类测试接口,结果报个这样的错误。
报的SQL异常,我就先检查SQL语句有没有问题,SQL正常,
然后我就用Debug走了一遍,发现从DAO层开始出现问题,然后坚持DAO方法和mapper.xml
也没有发现错误,
后来我叫了大神帮我看了看,他直接给我说,一般遇到无效的类连接会有2个种问题:
1.SQL有问题
2.输入或输出问题
解决方案:
已经确定SQL没有问题了,就先看输入的问题,Debug发现resultMap(获取输入值的变量),中没有需要输入的字段CustNo,然后就继续排查看mapper.xml文件,结果发现mapper.xml
本应该写成:select custno,custname from ifs_cust where CustNo = #{CustNo}
结果写成:select custno,custname from ifs_cust where custno = #{custno}
因为实体类和传入参数的客户号都定义的是CustNo,这下完美解决。
错误: 把2个custno 都改成CustNo
案例报错如下:
20180322 19:26:37,610 DEBUG Connection:27 - ooo Connection Opened
20180322 19:26:37,735 DEBUG Connection:27 - xxx Connection Closed
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.type.TypeException: Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: 无效的列类型
### The error may involve userNS.queryCustInfo-Inline