美文网首页
解决mybatis:org.apache.ibatis.bind

解决mybatis:org.apache.ibatis.bind

作者: 指楠针 | 来源:发表于2018-12-01 14:54 被阅读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文件),也可以!!!!
    谨记!!!

    相关文章

      网友评论

          本文标题:解决mybatis:org.apache.ibatis.bind

          本文链接:https://www.haomeiwen.com/subject/ptfrcqtx.html