异常提示:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.blp.eduService.mapper.EduCourseMapper.getCoursePublishVoById
nvalid bound statement (not found)提示说未找到该文件,
这个文件是com.blp.eduService.mapper.EduCourseMapper.getCoursePublishVoById
这个目录下的
这是个xml文件
而maven项目会把编译会的文件放在target包中,我们只要看该包下有没有这个文件
注:构建maven项目时生成target,这个包是用来存放项目构建后的文件和目录、jar包、war包、编译的class文件
可以看到该目录下并没有
这个错误是由maven默认加载机制造成的问题。
maven的默认加载机制
maven在默认情况下,在src-main-java目录下面在,只会加载java类型文件,其他类型文件(如.xml)不会加载。
既然在target包下没有,那就手动添加,这是第一种方法,要注意的是手动添加时要注意添加的xml文件路径要和未编译前对应,比如EduCourseMapper.xml文件,添加到target包下时也要创建一个xml包,确保路径一样
这个方法在实际应用中也常用但是一旦xml文件多起来,会显得麻烦还容易忘记。
方法二:可以把mapper包下的xml文件放到resources文件夹下
不推荐
,这样做改变了结构,约定大于配置
方法三:在application.yml(application.application)配置文件和pom.xml文件中进行配置
- application.yml
##配置mapper xml文件的路径
#注意这个classpath路径是从java下一个目录开始,到你想要访问的xml文件
mybatis-plus:
mapper-locations: classpath:com/blp/eduService/mapper/xml/*.xml
- pom.xml
<!-- 项目打包时会将java目录中的*.xml文件也进行打包 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
这种方法,个人比较喜欢。