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

前言

在使用 IDEA 当作工具使用 Mybatis+Spring 时,总是能碰到 Eclipse 碰不到的“蛋疼问题”,这应该是属于 IDEA 的阵痛期,这个错我已经碰到4次了,而且每次原因还不太同。久病成良医,下一次应该不会再出现了,记录下解决办法,希望能帮到你,因为我已经在这个问题上浪费太多时间了。

情况

Mybatis+Spring 配置有好几种方法。最常用的应该是 Mapper 动态代理开发,但是动态代理配置也有两种。

<!-- Mapper代理的方式开发方式一,配置Mapper代理对象 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
	<!-- 配置Mapper接口 -->
	<property name="mapperInterface" value="cn.itcast.mybatis.mapper.UserMapper" />
	<!-- 配置sqlSessionFactory -->
	<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

    <!-- Mapper动态代理开发 开发方式2   扫描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.guozh.bitbooks.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

一般使用第二种,本人也是使用第二种。如果第二种 首先有几点要确定。

  • *Mapper.java 和 *Mapper.xml 命名是否一致
  • 是否在一个包下,扫描能不能扫到 .xml。
  • *Mapper.xml 的 namespace 配置是否准确,接口方法名是否准确。

以上都是 mybatis 的基本知识,当然第二点 可以不再同一个包下。很多种写法,可能有人喜欢将 *Mapper.xml 放在 resources 下。无所谓,只要能扫描到就可以了。
ok 到这里如果还报错如上错误,和我一样,接着看吧

解决

  • 删除编辑后的文件 class,然后 Rebuild 在运行。
  • 如果上面方法不行,仔细找找在编译后的classes 中 *Mapper.xml 生成了没,如果没 那一定有问题。

这里写图片描述

我的项目结构是这样的,并且 *Mapper.xml 放在 java 中。这里就会有一个问题。

idea默认是不编译 src\main\java下的xml文件

所以这就需要我们手动配置下。

  • 将 *Mapper.xml 复制一份到 resources 下,记得修改 mybatis 配置文件的路径。
  • 在 pom.xml 中配置资源代码
<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

ok 希望能帮到你。

精选推荐

https://guozh.net/%E4%BB%8Ecsdn%E5%85%8D%E4%B8%8B%E8%BD%BD%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E5%88%B0%E7%BD%91%E7%9B%98%E8%B5%9A%E9%92%B1%E6%A1%88%E4%BE%8B/

https://guozh.net/%E3%80%90%E6%A1%88%E4%BE%8B%E3%80%91youtube%E8%BF%98%E5%85%BB%E6%B4%BB%E4%BA%86%E5%93%AA%E4%BA%9B%E4%BA%BA-%E5%88%86%E4%BA%AB%E7%82%B9%E4%BD%A0%E5%8F%AF%E8%83%BD%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84/

https://guozh.net/%E3%80%90%E6%A1%88%E4%BE%8B%E3%80%91%E5%88%AB%E4%BA%BA%E5%8D%961000%E5%88%80%EF%BC%81%E4%B8%80%E5%A5%97%E6%B2%B9%E7%AE%A1%E8%87%AA%E5%8A%A8%E7%94%9F%E4%BA%A7%E8%A7%86%E9%A2%91%E8%B5%9A%E9%92%B1/

https://guozh.net/%E3%80%90%E6%A1%88%E4%BE%8B%E3%80%91%E6%90%AD%E5%BB%BA-quizzes-%E7%BD%91%E7%AB%99%EF%BC%8C%E6%AF%8F%E5%A4%A9%E8%B5%9A%E5%8F%96-30-50-%E7%BE%8E%E5%85%83/

本文由老郭种树原创,转载请注明:https://guozh.net/idea-org-apache-ibatis-binding-bindingexception-invalid-bound-statement-not-found/

IDEA org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):》有3个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注