本文主要是介绍Idea中运行Maven/Gradle项目报错Invalid bound statement (not found): com.xx.dao.SysSettingMapper.findAll(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 1.Maven/Gradle默认的web目录结构
- 问题
- 原因
- 解决
- Maven中
- Gradle中
- 总结
- 其它
前言
1.Maven/Gradle默认的web目录结构
若我们没有在pom.xml/build.gradle中显示设置resources/sourceSets,则Maven/Gradle默认的项目目录结构:
srcmainjava // source 根目录resources // resources 根目录testjava // test source 根目录resources // test resources 根目录
在gradle中,等效于在build.gradle里有以下配置:
sourceSets {main {java {srcDirs = ['src/main/java']}resources {srcDirs = ['src/main/resources']}}test {java {srcDirs = ['src/test/java']}resources {srcDirs = ['src/test/resources']}}
}
当然,我们可以不使用默认的目录结构,这是就需要自定义sourceSets,譬如:
sourceSets {main {java {srcDirs = ['src/java']}resources {srcDirs = ['src/resources']}}
}
若我们只是想在默认的sourceSets的基础上新增一些目录,就可以这么写:
sourceSets {main {java {srcDir 'otherDir/src/main/java'}}
}
问题
Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xx.dao.SysSettingMapper.findAllat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)at com.sun.proxy.$Proxy38.findAll(Unknown Source)at com.xx.service.impl.SysSettingServiceImpl.findAllSysSetting(SysSettingServiceImpl.java:30)
原因
报错的原因时因为在编译输出目录没有找到mapper文件
mapper文件在源码中的src/main/java中:
那么我们的mapper文件为什么没有被编译输出呢?因为idea在构建Maven/Gradle项目时,默认只会编译src/main/java下的java文件和src/main/resource的资源文件。而src/main/java下的资源文件会被忽略!
解决
Maven中
[pom.xml]
<resources><resource><!--- 指定目录 ----><directory>src/main/java</directory><includes><!--- 指定xml文件----><include>**/*.xml</include></includes><filtering>false</filtering></resource>
</resources>
Gradle中
见Idea中Gradle插件的“Build and run“设置项,文章中名为"mapperXmlCopy"的task
总结
所以为了避免这个问题导致浪费时间,最好不要将mapper文件放在java目录下,而是放在resources目录下。
其它
参考https://blog.csdn.net/Icannotdebug/article/details/83081745
参考https://blog.csdn.net/qq_43519310/article/details/89388068
这篇关于Idea中运行Maven/Gradle项目报错Invalid bound statement (not found): com.xx.dao.SysSettingMapper.findAll()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!