MyBatis:在Java

时间:2018-08-09 21:07:13

标签: spring-boot mybatis

我正在寻找一种将映射器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

有没有办法做到这一点?

3 个答案:

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