Bug分析:
看错误可知,找不到mapper文件。
首先我们查看配置文件(mybatis-config.xml)路径是否写正确。
路径是没问题,配置的几种方式我也都试过了。于是将Xxxmapper.xml文件放到resource目录下,发现可以访问。
Bug思考:
就在想为什么放在dao层中写路径就访问不到了呢?
通过查看编译后的target目录,发现Java目录下没有打包后的*mapper.xml,这样我们就大致找到问题了,问题就在于为什么运行之后将mapper.xml打包不进来呢?
maven打包规则:
maven打包的时候默认打包src/main/java下的class文件,打包src/main/resources下的配置文件。
解决方案:
在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>
Bug总结:
maven打包机制,默认会把src/main/resources下面的配置文件打包进来,src/main/java下的java文件编译打包进来。
为了解决和避免maven打包的问题,我们需要自己配置maven打包位置,一旦配置pom文件里头的resources节点,那么maven打包的时候自动打破默认的配置文件的位置,会根据我们配置的位置的配置文件