zoukankan      html  css  js  c++  java
  • IDEA org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    引用地址: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):

    前言

    在使用 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 生成了没,如果没 那一定有问题。

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

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

    idea默认是不编译 srcmainjava下的xml文件

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

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

    ok 希望能帮到你。

  • 相关阅读:
    每日日报
    每日日报
    java笔记
    每日日报
    每日日报
    每日日报
    查看当前mysql时区 并设置为北京时间
    springboot 指定配置文件启动, 区分开发和线上分支
    Js Contains方法
    vue $refs的基本用法
  • 原文地址:https://www.cnblogs.com/heguxin/p/10827140.html
Copyright © 2011-2022 走看看