MyBatis-Plus(三):使用自定义目录下的xml时踩坑记录

使用自定义目录下的xml时踩坑记录


大家好,我是欧阳方超,可以扫描下方二维码关注我的公众号“欧阳方超”,后续内容将在公众号首发。

在这里插入图片描述

在这里插入图片描述

1、概述

使用MyBatis-Plus时出现了下面的错误,由于查询SQL写在了xml中,打开jar包发现类路径中没有写SQL的xml文件,所以才报这个错误。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xx.phone.mapper.CeiCompanyMapper.getCompanyBasicInfo

下面的yml中关于MyBatis-Plus的配置:

# MyBatis-Plus配置
mybatis-plus:
  mapper-locations: classpath*:com/xxx/xxx/mapper/xml/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.xxx.xxx.entity

2、问题分析与解决

那么问题来了,为什么xml文件没打到jar中呢,也就是说为什么没有读到xml文件呢,这要从MyBatis-Plus的默认读取路径说起,MyBatis-Plus 默认从 classpath*:/mapper/**/*.xml 目录读取 XML 映射文件。这意味着它会在类路径下搜索所有名为 mapper 的目录及其子目录中的 XML 文件,具体路径可以通过配置项 mapper-locations 来指定。我所遇到的问题就发生在使用mapper-locations指定了xml的位置,但是却没有在项目pom.xml 文件中用 标签定义项目中的资源文件的处理方式。具体说,需要在pom.xml中添加如下配置片段:

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

第一个resource块
<directory>src/main/resources</directory>: 指定了资源文件的目录。Maven 默认会将 src/main/resources 目录中的所有文件打包到最终的 JAR 或 WAR 文件中。
<filtering>true</filtering>: 启用过滤功能。这意味着在构建过程中,Maven 会对该目录中的文件进行处理,替换特定的占位符(如 ${project.version})为实际的值。这通常用于配置文件中,以便在不同的环境中使用不同的配置。
第二个 块
<directory>src/main/java</directory>: 指定了另一个资源目录。在这个例子中,它是 Java 源代码目录,通常不作为资源目录使用,但在这里指定是为了处理其中的 XML 文件。
<includes>: 这个标签定义了要包含的文件类型。
<include>**/*.xml</include>: 表示将 src/main/java 目录下及其所有子目录中的所有 XML 文件包含到构建过程中。这意味着这些 XML 文件也会被打包到最终的输出中。

3、总结

如果要自定义xml文件的路径,需要在pom文件中的resources标签内定义项目中资源文件的处理方式,否则会读不到xml文件,导致报错。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值