SpringMVC项目中,通过@Autowired注入mapper接口类,在操作数据库时报上面这个错误。

在网上找了好久都不好使,后来下班回家在路上想到了一个避开这个错误的方法,这个错误是新建Mapper类与Mapper.xml时报的错误,我们可以把这个类中的方法移到以前已经有的Mapper类中,这样就可以避免这个错误了。这样可以判断是sql语句出错还是Mapper.xml文件出错。结果果然是Mapper,xml文件出错了。

事情解决了,但是问题还没有解决,于是我继续排错,我把新建的Mapper.xml中所有的sql语句都删除只留一个最简单的sql,就是一个查表的sql语句,继续引用这个方法,结果还是报错,(名称空间,返回参数,id都是对的),于是我又复制一个好的能引用的这种xml文件,把sql放进去,调用结果是好使的,我把xml文件名称改成Mapper类的名称在时我注意到我报错的xml文件的名称首字母是小写的和我mapper类名有差别。我把它删了,再调用新建的这个xml文件是好使的。错误的xml文件和新建xml文件的其它地方一模一样只有名字首字母不一样。结果首字母小写的报错,大写的不报错。于是我又把首字母改为小写的结果居然不报错,在能震惊我一年,idea可能有些玄学。