Spring Boot集成MyBatis MyBatis绑定异常org.apache.ibatis.binding.BindingException

男娘i 2022-01-26 12:49 340阅读 0赞

因为受SSM框架的影响,我比较喜欢讲MyBatis的mapper映射文件和dao接口文件放在一个目录下。(如下面目录结构的截图显示的那样)但是这样写了之后,而且在application.properties 配置文件中也配置了mapper的路径。每次启动项目也没有问题,但是当我浏览器请求的时候就会报错:org.apache.ibatis.binding.BindingException

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REX0ZBbG1L_size_16_color_FFFFFF_t_70

首先看下我的配置

目录结构:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REX0ZBbG1L_size_16_color_FFFFFF_t_70 1

application.properties 配置文件:

  1. # mybatis接口文件位置
  2. mybatis.mapper-locations=classpath*:com/***/***/dao/*.xml
  3. 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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REX0ZBbG1L_size_16_color_FFFFFF_t_70 2

2021011217110682.png

解决方式1:

在pom.xml文件中加入这样的配置(让maven在打包的时候去这个路径下把这些资源文件一起打包了)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REX0ZBbG1L_size_16_color_FFFFFF_t_70 3

解决方式2:

将mapper的映射文件放在resources文件夹下。(如图) 原因是因为,resources下的文件会被当成资源文件,maven在打包的时候会打包这些文件而不需要在pom.xml中指定路径。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1REX0ZBbG1L_size_16_color_FFFFFF_t_70 4

b.然后将application.properties 配置文件改为:

  1. # mybatis接口文件位置
  2. mybatis.mapper-locations=classpath:/mapper/*.xml
  3. mybatis.type-aliases-package=com.***.***.pojo

发表评论

表情:
评论列表 (有 0 条评论,340人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring Boot集成MyBatis

    > 你要搞清楚自己人生的剧本:不是你父母的续集,不是你子女的前传,更不是你朋友的外篇。对待生命你不妨大胆冒险一点,因为好歹你要失去它。——源自尼采 开始前… 上面的金句