我正在寻找一种将映射器xml文件从“资源”下移动到“ java”文件夹下的方法。我希望这是可能的,因为那样interface.java文件和mapper.xml文件可以并排放置。
我正在使用Spring Boot。
application.properties:
mybatis.config-locations = classpath:mybatis-config.xml
resources / mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper url="file:///home/abc/Projects/myproject/myapp/src/main/java/com/abc/services/myservice/MyMapper.xml"/>
</mappers>
</configuration>
文件夹/ home / abc / Projects / myproject / myapp / src / main / java / com / abc / services / myservice /
MyMapper.xml
MyMapper.java
当我运行该应用程序时,出现“未找到”错误:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.abc.bm.services.myservice.MyMapper.findAll
有没有办法做到这一点?
答案 0 :(得分:1)
您需要将资源文件从源文件夹复制到目标输出文件夹。
对于Maven,这是使用maven-resource-plugin
完成的:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources01</id>
<phase>process-classes</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<encoding>UTF-8</encoding>
<resources>
<resource>
<directory>${basedir}/src</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
如果您使用gradle,则配置类似于:
sourceSets {
main {
resources {
srcDirs = ["src/main/java"]
includes = ["**/*.xml"]
}
}
}
答案 1 :(得分:0)
或者,我使用SerializationFeature.INDENT_OUTPUT
属性,如下所示:
resource
使用相对路径,这对我来说很有效。
答案 2 :(得分:0)
您可以添加
之类的资源。<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>