今天在写运行接口时出现以下的报错。
Error querying database,Cause:java.lang.reflect.UndeclaredThrowableException
The error may exist in file[mapper.xml文件路径]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL:select count(1) from tbl_ad_switch_inf where ad_channel = ? and trans_type = ?
Cause: java.lang.reflcet.UnderclaredThrowableException,data=null)
百度该错误信息总结如下:
原理:Mybatis 是通过 XML 文件去完成持久化和数据库表之间的映射关系的。即报错可能是mapper 文件的属性和实体类的属性不一致导致反射出错。
原因:
1、mapper 文件的路径写错
2、mapper 文件中的方法名写错了(id 的值一定要对应 dao 层接口中的方法名)。
3、getter、setter(方法没写)。
4、sql 语句中可能包含数据库的关键字(非 java 关键字)
5、mapper 文件中 命名空间(namespace)出错
6、实际开发中会有多个数据库(你要确定本地启动连接的是哪个数据库)
7、如果 mapper 文件中插入的字段数据库表里没有也会报这个错
按照网上查询的前五条试了都没问题,可是本地测试还是报错。最终在同事的帮助下,发现是数据库连接的不对。实际开发中会有多个数据库,本地项目启动连接的数据库中没有创建对应的表,所以会报以上错误。