Mapper檔案package目錄中,執行方法不能匹配錯誤(maven打包過濾src下的xml)
阿新 • • 發佈:2020-10-11
Mybatis 中Mapper使用package方式配置報錯org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
程式碼結構如圖
dao和對應的mapper檔案都在同一個包下,下面是mybatis配置,
執行程式碼總是提示使用的方法為繫結,反覆檢查程式碼沒有問題,突然開啟target中的,沒有發現xml mapper檔案,原因maven會自動過濾src下的xml等檔案
知識點:
maven 打包會自動過濾src,package 下的xml檔案,不會將其編譯
解決方案:
方案一: <build> <finalName>test</finalName> <!-- 這樣也可以把所有的xml檔案,打包到相應位置。 <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering><--這裡是false--> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
方案二:
<build> ... </plugins> ... <!-- 此plugin可以用 利用此plugin,把原始碼中的xml檔案,打包到相應位置, 這裡主要是為了打包Mybatis的mapper.xml檔案 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>copy-xmls</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build>
方案三:
程式碼規範一下,xml等配置檔案,全部放在resources下