Spring Boot集成MyBatis MyBatis绑定异常org.apache.ibatis.binding.BindingException
因为受SSM框架的影响,我比较喜欢讲MyBatis的mapper映射文件和dao接口文件放在一个目录下。(如下面目录结构的截图显示的那样)但是这样写了之后,而且在application.properties 配置文件中也配置了mapper的路径。每次启动项目也没有问题,但是当我浏览器请求的时候就会报错:org.apache.ibatis.binding.BindingException
首先看下我的配置
目录结构:
application.properties 配置文件:
# mybatis接口文件位置
mybatis.mapper-locations=classpath*:com/***/***/dao/*.xml
mybatis.type-aliases-package=com.***.***.pojo
感觉也没有错误啊?怎么会找不到这个xml文件呢。
后来经过反复摸索,知道了原因在哪,先看什么原因,然后说明解决方式。
原因是因为,把mapper文件放在类似于src/java/dao文件夹下,而这个文件夹类型是jar,所以maven打war包的时候,只会打包java文件,而把mapper映射文件或者properties文件给过滤掉,导致路径下只有class文件,没有mapper的xml文件。所以配置文件中配置的路径找不到这个文件(可以去看看源码,mybatis在绑定的时候,会去你在application.properties 配置文件中配置的路径下找xml文件)。
可以参考这个博客:https://blog.csdn.net/tigerpan1119/article/details/80828370
解决方式1:
在pom.xml文件中加入这样的配置(让maven在打包的时候去这个路径下把这些资源文件一起打包了)
解决方式2:
将mapper的映射文件放在resources文件夹下。(如图) 原因是因为,resources下的文件会被当成资源文件,maven在打包的时候会打包这些文件而不需要在pom.xml中指定路径。
b.然后将application.properties 配置文件改为:
# mybatis接口文件位置
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.type-aliases-package=com.***.***.pojo
还没有评论,来说两句吧...