SpringBoot整合MyBatis,BindingException问题

在学习spring boot整合mybatis过程中应该经常碰到mybatis异常"BindingException:Invalid bound statement (not found)";

往往网上查找原因大多都归结为以下几种原因:

  •  mapper.xml文件的namespace与mapper接口完整包路径不一致
  •  mapper.xml文件中的sql语句所在标签的id属性与mapper接口中的方法名称不一致
  •  mapper.xml文件中的中文注释原因(感觉这个有点扯淡, mybatis的dtd不至于写的这么差,注释用中文就区分不开了?)

 

然而个人感觉, 有一个原因才是这个问题最容易碰到的情况:

  大多数SpringBoot教程,大都推荐把mapper.xml文件写在java文件夹下的某子包中,比如java/com/.../.../mapper或者java/com/.../.../dao等等这一类包下。然而springboot项目本身属于maven项目(只不过依赖的版本大多交由spring-boot-starter-parent去解决),而maven项目默认资源路径是main/resources,所以在java路径下的xml资源maven是不会主动扫描的,所以spring boot教程很多都忽略了这个重要的点。

 

  如果按照教程推荐的路径中放xml文件,那么务必要手动配置项目的resource路径,让maven主动扫描xml文件:

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*xml</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
</resources>    

 

posted @ 2019-05-31 18:51  flinca  阅读(856)  评论(0编辑  收藏  举报