mybatis+spring 整合项目报错Mapped Statements collection does not contain value for test.findUserByName

mybatis+spring 整合项目报错Mapped Statements collection does not contain value for test.findUserByName

仍旧是照着书敲都有好多错误,实在是无法理解为什么。

以下是我百度看了很多博客的解决方法:

1、mapper.xml中没有加入namespace; 

2、mapper.xml中的方法和接口mapper的方法不对应; 
3、mapper.xml没有加入到mybatis-config.xml中(即总的配置文件);

4、mapper.xml文件名和所写的mapper名称不相同。

我的项目是maven和spring整合的,所以上面的解决方法是无效的。

这个问题纠结了一个下午,所以一个下午都在百度上看解决方法,看了很多博客,不记得是哪一篇博客给我的启发了,maven项目部署之后运行的是target里面的代码,于是去检查我的target里面的test-class,里面果然没有mapper,所以就是其实我的UserMapper.xml一直没有被部署上去。

按照百度的经验,首先检查build path是否是如图:


如果不是可能要检查pom.xml中是否有以下代码

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>

        </resources>

如果加上这段代码后还是报同样的错误,或许你跟我遇到的是一样的问题。

因为我是照着书上敲的,书上的mapper包是放在src/test/java中的,我也放在这里面,但是不管怎样都没有被部署上去。或许是eclipse的原因,或许是其他原因,总之mapper.xml放在这里面就部署不上去,于是我把它放到了src/test/resource下面,然后就部署上去了。

mapper.xml放在哪里应该是有规定的,但是由于我是“半路出家”,所以对于这些并不是很熟悉,只能一个坑一个坑的去挖然后去跳。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章