mybatis:Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource

 整天写业务逻辑代码,但偶尔整个配置搞死人(根基不牢),有些细节知识还是欠缺,遇到问题总是搞的很烦躁,通过这篇博文将自己遗忘的知识总结起来。

_____________________________________________________________________________________________

先贴错误:

看起来很简单,按照错误排查一下,就ok,但硬生生搞了半天,还搞的烦躁,这么简单,咋找不到问题呢。

分析:

看错误可知,找不到mapper文件。

查看mybatis的配置文件路径是否写正确。

但看样子写的路径是没问题。 于是将mapper.xml文件放到resource目录下,发现可以访问(下图是路径)。

就在想为什么放在dao层中写路径就访问不到了呢?

带着问题出发,看了下编译后的target目录,如下图没有打包后的*mapper.xml,大致找到问题了,为什么运行之后将mapper.xml打包不进来呢?百度了下maven打包规则,可知:

这种情况是这样的,maven打包的时候默认打包src/main/java下的class文件,打包src/main/resources下的配置文件

(上面发现xml不见的契机其实是这样的运行项目,报错,说mapper.java里头的方法bind exception,这个错误就是xml不存在导致的

 

如下往pom文件的bulid节点里头增加如下子节点内容即可解决问题(在pom中添加之后一定要 reimport maven project 胰一下,让配置生效):

 

<!--   **.xml写在src找不到问题解决方案     -->
        <resources>
            <resource>
                <!-- directory:指定资源文件的位置 -->
                <directory>src/main/java</directory>
                <includes>
                    <!-- “**” 表示任意级目录    “*”表示任意任意文件 -->
                    <!-- mvn resources:resources :对资源做出处理,先于compile阶段  -->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!--  filtering:开启过滤,用指定的参数替换directory下的文件中的参数(eg. ${name}) -->
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

总结:

maven打包,默认会把src/main/resources下面的配置文件打包进来,src/main/java下的java文件编译打包进来。

一旦配置pom文件里头的resources节点,那么maven打包的时候自动打破默认的捞取配置文件的位置,只捞取我们配置的位置的配置文件

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值