解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

作为新手在学习SpringBoot时,为了用复杂sql语句去使用xml配置sql的参数,结果遇到了这样的异常,网上搜索到原因是Mapper.java文件与Mapper.xml文件对应信息不在这里插入代码片一致,解决方案如下:
1:检查两个文件是否在同一个包中(如果有指定xml文件,则不需要考虑这点)
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称与xml文件中的id能否对应上
4:检查函数的参数类型以及返回类型与xml文件能否对应上
5:去掉xml文件中的中文注释
6:随意在xml文件中加一个空格或者空行然后保存

上述方法都排除了之后,搜到其他解决方案。因为我是将xml文件放在resources目录下的,可能是因为IDEA没有扫描到resources目录中*Mapper.xml文件,同时无法将配置文件加载到classes目录下,这种情况的解决方案:

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

然而上面各种方法试了都没有用,target的dao文件下面还是只有class文件,没有xml文件
在这里插入图片描述
调了两天,走投无路,去pom.xml中看了下配置,发现有一个依赖的配置是这样的:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<scope>runtime</scope>
</dependency>

发现其他依赖大多没有<scope>,而这里多出了一个<scope>runtime</scope>(当初是在spring官网生成的包,就没想着要改)于是去查它是什么意思:

scope标签参数:

  • compile
    默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布
  • provided
    跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
  • runtime
    表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。
  • test
    表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system
    跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。

说实话,没看懂,以后再说吧,把<scope>这个标签删掉,更新Maven工程,重新编译,xml文件神奇的出来了,问题解决:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/piyongduo3393/article/details/83656493