SpringBoot整合MyBatis --- mapper映射文件无法加载及路径问题

mapper映射文件无法加载及路径问题

问题:

在SpringBoot整合MyBatis时,若mapper映射文件在java路径下,就会一直报错Invalid bound statement (not found): xxx.xxxMapper.selectxx
在这里插入图片描述

说明Mapper接口是可以调用到的,问题就出在无法映射到Mapper.xml文件。

同时查看输出target目录下,没有xxxmapper.xml文件的编译结果。

原因:

SpringBoot默认配置情况下,只有resources路径下的xml文件会被扫描。

解决办法:

方法一:【推荐使用】

将mapper映射文件放在resources目录下,通常会在resources目录下建一个mapper目录,存放各种mapper的映射文件,
SpringBoot整合MyBatis --- mapper映射文件无法加载及路径问题_第1张图片
并且在application.properties中配置 Mapper映射文件的路径为:

#指定myBatis的核心配置文件与Mapper映射文件
mybatis.mapper-locations=classpath:mapper/*.xml

测试成功,查看target目录下,有xxxMapper.xml文件的编译结果。
SpringBoot整合MyBatis --- mapper映射文件无法加载及路径问题_第2张图片

方法二:

mapper映射文件依旧放在java目录下,
SpringBoot整合MyBatis --- mapper映射文件无法加载及路径问题_第3张图片
此时,需要在pom.xml文件中添加java路径下xml文件扫描配置,

 <build>
     <resources>
         <resource>
            <filtering>truefiltering>
            <directory>${basedir}/src/main/javadirectory>
            <includes>
                <include>**/*.xmlinclude>
            includes>
         resource>
         <resource>
            <directory>${basedir}/src/main/javadirectory>
            <excludes>
               <exclude>**/*.xmlexclude>
            excludes>
          resource>
     resources>
build>

并且在application.properties中配置 Mapper映射文件的路径时要加上包名,

#mybatis.mapper-locations=classpath:包名/*.xml
mybatis.mapper-locations=classpath:org.xiao.dao/*.xml

测试成功,查看target目录下,有xxxMapper.xml文件的编译结果。
SpringBoot整合MyBatis --- mapper映射文件无法加载及路径问题_第4张图片

你可能感兴趣的:(SpringBoot)