解决mybatis:org.apache.ibatis.bind

2018-12-01  本文已影响0人  指楠针

那天中午,

第一次使用idea maven,

搭建ssm 从数据库查数据在jsp上面显示,

困难重重,还好有好心人远程协助,

眼看差不多了,

在我要访问的时候报了这么一个错误,

可喜的是网上有和我类似错误的人,我还有救,

查看到了这篇文章,https://www.jianshu.com/p/4e50fa289271

我试了一下,真的灵!

原因就是使用maven的时候,默认resources下才是是存放配置文件的地方,而mybatis的动态代理开发规范是要求mapper.xml文件和接口放在一起的,放在了java源码路径下,导致xml文件并没有被编译进classes文件下,少东西,所有报了这个错误.
两种解决办法:

第一,可以在pom.xml文件中添加这么一行,

<build>
        <resources>
            <!-- maven项目中src源代码下的xml等资源文件编译进classes文件夹, 注意:如果没有这个,它会自动搜索resources下是否有mapper.xml文件, 
                如果没有就会报org.apache.ibatis.binding.BindingException: Invalid bound statement 
                (not found): com.pet.mapper.PetMapper.selectByPrimaryKey -->                          
                        <!--将java目录下的配置文件编译进classes文件 -->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

            <!--将resources目录下的配置文件编译进classes文件 -->
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
<!--上面的两个resource代表把对应的directory里面的目录设置成源码目录,编译时,这两个目录下的.xml和.properties文件都会被安排到classes目录下-->

第二,在resources下面自己建立一个和mapper接口一样的路径,把mapper的配置文件放进去(此时接口目录下可以省略xml文件),也可以!!!!
谨记!!!

上一篇下一篇

猜你喜欢

热点阅读