【Mybatis-Plus】【Mybatis】Mapper.xml放在src/main/java下解决 Invalid bound statement (not

315 阅读1分钟

前言

在Mybatis项目中引入Mybatis-Plus框架,发现项目的xml直接放在src/main/java中,而不是src/main/resources。

引入Mybatis-Plus为了一致性也将xml直接放在src/main/java下,发现报错:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

文件结构

我的项目文件结构概览如下:

src/main/java

org.example.dao
|____ config
|____ controller
|____ ......
|____ dao
|____ |____ mapper
|____ |____|____ AAAMapper.xml
|____ |____|____ BBBMapper.xml
|____ |____|____ CCCMapper.xml
|____ |____|____ ......
|____ |____ AAAMapper.java
|____ |____ BBBMapper.java
|____ |____ CCCMapper.java
|____ |____ ......
|____ ......
|____ MainApplication.java

src/main/resources

application.yml

解决

配置文件application.yml中添加:

mybatis-plus:
  mapper-locations: classpath*:com/ys7/saas/algorithmtraining/dao/mapper/*Mapper.xml

如果是application.properties也是一样的,只是要转换一下格式。

pom.xml文件除了依赖以外,添加<resources>配置,指定目录为src/main/java,包含所有文件后缀为Mapper.xml的xml文件,当然这里<include>**/*Mapper.xml</include>也可以写成<include>**/*.xml</include>,这样就包含所有xml文件。

	......
	
    <dependencies>
    
		......
		
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter-test</artifactId>
            <version>3.4.2</version>
        </dependency>

    </dependencies>


    <build>

		......
		
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*Mapper.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

MainApplication.java

/**
 * 服务启动类
 * MapperScan指定mapper扫描路径
 */
@MapperScan("org.example.dao")
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

参考

blog.csdn.net/hanpenghu/a…

baomidou.com/pages/f84a7…