关于springboot打包,然后扫描不到mapper文件

本文介绍了解决SpringBoot项目中出现的MyBatis BindingException问题的方法,包括调整mapper XML文件的位置及名称,并确保这些文件能正确打包进JAR。

springboot项目打成jar包后,一直提示:

nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ny.dao.UserInfoDao.getUserInfo] with root cause

,花了几小时试过很多种方式,一直没用成功,最后才用的是,把mapper的xml文件,放到dao层下面,并且名字改成一样的,然后启动项目,就么有报错了。

另外如果是mapper的xml文件没用成功打入jar包,则在pom.xml中添加:

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

就OK了,分享大家,也给自己留个笔记

### 解决Spring Boot与MyBatis Plus集成时测试中找不到Mapper的问题 #### 1. 配置文件设置 确保`application.yml`或`application.properties`中的配置正确无误。对于YAML格式的配置文件,应当含如下内容: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: cache-enabled: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath*:mapper/*.xml ``` 上述配置指定了数据库连接信息以及MyBatis-Plus的相关属性,特别是`mapper-locations`用于指定映射文件的位置[^1]。 #### 2. Maven构建工具配置 在项目的POM文件内加入必要的插件支持XML资源加载: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.yml</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` 这段代码使得Maven能够识别并打包位于`src/main/resources/mapper`目录下的`.xml`文件到最终的JAR中。 #### 3. Mapper接口扫描路径设定 通过添加`@MapperScan`注解于应用程序入口类上,可以明确告知框架去哪里寻找Mapper接口及其对应的XML文件: ```java package cn.wbnull.springbootdemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("cn.wbnull.springbootdemo.mapper") public class MybatisPlusApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } } ``` 这里设置了要扫描Mapper接口所在的名,从而让Spring自动装配这些Bean实例[^2]。 #### 4. 测试环境特殊处理 当运行单元测试时,默认情况下可能会忽略掉某些开发阶段才有的配置项。因此,在编写测试案例之前,建议创建专门针对测试场景的应用程序上下文配置文件(如`application-test.yml`),并将该文件放置于`src/test/resources`下。同时,在启动测试前需激活此profile: ```bash -Dspring.profiles.active=test ``` 另外一种方式是在测试类上方加上`@ActiveProfiles("test")`注释来达到相同效果[^4]。 #### 5. 调试技巧 如果仍然遇到问题,则可以通过启用SQL日志打印功能来进行排查。修改`application.yml`内的相应选项即可开启详细的执行记录输出至控制台,便于观察实际发生的查询语句是否符合预期[^3]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值