Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot MyBatis:将映射器xml文件放在java下的映射器接口旁边_Spring Boot_Mybatis - Fatal编程技术网

Spring boot MyBatis:将映射器xml文件放在java下的映射器接口旁边

Spring boot MyBatis:将映射器xml文件放在java下的映射器接口旁边,spring-boot,mybatis,Spring Boot,Mybatis,我正在寻找一种方法,将MapperXML文件从“资源”下移动到“java”文件夹下。我希望这是可能的,因为那样interface.java文件和mapper.xml文件将并排出现 我用的是弹簧靴 application.properties: mybatis.config-locations = classpath:mybatis-config.xml 参考资料/mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> &

我正在寻找一种方法,将MapperXML文件从“资源”下移动到“java”文件夹下。我希望这是可能的,因为那样interface.java文件和mapper.xml文件将并排出现

我用的是弹簧靴

application.properties:

mybatis.config-locations = classpath:mybatis-config.xml
参考资料/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>
当我运行应用程序时,出现“未找到”错误:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.abc.bm.services.myservice.MyMapper.findAll

有没有办法实现这一点?

您需要将资源文件从源文件夹复制到目标输出文件夹

对于maven,可以使用
maven资源插件

<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>

或者,我使用
资源
属性,如:

<mappers>
  <mapper resource="mappers/account.xml" />
</mappers>


这是一个非常适合我的想法,使用相对路径

<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>

org.springframework.boot
springbootmaven插件
src/main/resources
src/main/java
**/*.爪哇

@Roman_Konova,成功了,谢谢!!我唯一需要更改的是${basedir}/src/main/java(就像在gradle配置中一样)。我还将其添加到IntelliJ中“启动前”部分的运行配置中
<mappers>
  <mapper resource="mappers/account.xml" />
</mappers>
<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>