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下