在学习mybatis中,我们总会遇到这个问题,以下有几种解决方式

第一种:查看自己的mapper接口文件与自己的mapper.xml文件是否一致

一致在看namespace中的路径是否正确,namespace要写的是接口的全路径

可以使用 mybatisX插件来看

Invalid bound statement (not found)的原因以及解决方法_xml

第二种:查看编译的target文件中是否有mapper,也就是有没有编译上.

可以clear一下,然后package打包.

然后查看pom中是否有配置

<!-- 如果不添加此节点src/main/java目录下的所有配置文件都会被漏掉。 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.ini</include>
                </includes>
            </resource>
        </resources>

第三种:去yml配置文件中 去看自己的配置路径

# MyBatis
mybatis:
  # 搜索指定包别名
  typeAliasesPackage: com.zykj.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

第三种的路径,包问题

想要在mapper下加入一个文件夹,然后再写xml文件

Invalid bound statement (not found)的原因以及解决方法_java_02

mapper接口与mapper.xml的路径要一致.

这里说一下如何展开包为层级,而不是 com.51cto.domain这种形式,23版idea是三个点,之前版本是一个齿轮.

把这个 compact 前面的对钩去了就行

Invalid bound statement (not found)的原因以及解决方法_java_03