将*mapper.xml迁移到src下导致mapper与id绑定失败的问题

本文讲述了作者在使用SpringCloud Alibaba时,为了解决多个模块mapper文件管理问题,尝试将xml放入对应模块但遇到编译问题。最终发现是资源过滤问题,通过调整build配置将java目录中的xml文件打包解决。同时提到了classpath与classpath*的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景描述

最近在写项目时因为用spring cloud alibaba时,由于src中modules下有多个mapper,在将以前的mapper.xml放在resources下没那么方便查找;就想着把xml也方在对应的modules下方便开发管理;

mybatis-plus: 
  # 将原有的配置注释 调整为下面的配置
  # mapper-locations: classpath:/mapper/**/*.xml
  mapper-locations: classpath:com/xxx/modules/*/mapper/*.xml

报错如下截图
在这里插入图片描述
发现还是不对一致困扰了我很久,一致以为是 mapper-locations 后的位置不对,但是怎么调整都没有找到原因,还是妥协暂时将xml放在resources目录下;第二天突然想着看target下编译是否成功,发现target编译下压根就没有xml,自此困扰我一天的问题终于找到原因

问题解决

要解决在项目中,把src编译下的xml编译到target中就很简单了

 <build>
        <!--项目打包会将java目录中的*.xml文件进行打包-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <!--默认情况下是true 现在修改为false 就不会过滤掉这个xml文件了-->
                <filtering>false</filtering>
            </resource>

            <resource>
                    <directory>
                    src/main/resources
                </directory>
            </resource>
        </resources>
    </build>

打完收工

彩蛋

classpath:与classpath*:的区别
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值