SpringBoot整合Mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

问题描述:

在SpringBoot整合Mybatis的环境下执行SQL时报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

application.yml文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3307/flying_ping?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password: root
  web:
    resources:
      static-locations: classpath:static

mybatis:
  mapper-locations: com/test/mapper/*.xml
  type-aliases-package: com.test.pojo
  configuration:
    map-underscore-to-camel-case: true

看起来也没错,难道这些映射文件压根就没有编译进去吗?所以我跑到classpath目录去看了一下
在这里插入图片描述果然不出我所料,SpringBoot没有将src/main/java/下的xml文件编译进来。。。


原因分析:

在网上查找资料得知,这并不是SpringBoot的错,而是IDEA的错,误会SpringBoot了呀!!!
IDEA的maven项目中,默认源代码目录下(src/main/java目录)的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。


解决方案:

解决方案有多种

  • 第一种:需要在pom.xml中添加如下插件
<build>
     <resources>
          注意这里要给springBoot指定需要打包的静态资源。否则SpringBoot将找不到配置文件
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.yml</include>
                  <include>**/*.properties</include>
                  <include>**/*.xml</include>
              </includes>
              <filtering>false</filtering>
          </resource>
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>**/*.yml</include>
                  <include>**/*.properties</include>
                  <include>**/*.xml</include>
              </includes>
              <filtering>false</filtering>
          </resource>
      </resources>
  </build>

这种方式在项目实战中还是比较常用且靠谱的

  • 第二种:将mapper.xml文件放在resource目录下

如果没有什么特殊场景,也就是你仅仅只是练习就将mapper.xml放在resources包下。因为MAVE默认在编译的时候会将resources包下的文件也编译到classpath下
如图
在这里插入图片描述同时将properties文件或yml文件中的配置改为

mybatis.mapper-locations=classpath:mapper/*.xml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值