当前位置: 首页 > news >正文

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

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

  • 1、概述
  • 2、问题分析与解决
  • 3、总结

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

在这里插入图片描述

在这里插入图片描述

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文件,导致报错。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。


http://www.mrgr.cn/news/58009.html

相关文章:

  • Casbin是什么?
  • 力扣之613.直线上的最近距离
  • 第十六章_反射机制
  • 达梦数据库名词介绍-----持续更新中
  • 一个开源的跨平台UI框架,可使用Web技术构建跨平台桌面应用程序
  • git 工作环境恢复到上次提交
  • CMake中的List关键词:详细指南
  • 数据结构与算法——Java实现 46. 从前序与中序遍历序列构造二叉树
  • 【多线程和高并发】多线程和高并发提纲
  • Gradle核心概念总结
  • 论软件著作权
  • 线性可分支持向量机代码实现
  • Python 代码的主要功能是从给定的日志文件和设备列表中提取特定设备(华为和华三)的用户账号信息
  • Java 开发——(下篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus
  • AI基础:传教士与野人
  • Python如何处理zip压缩文件(Python处理zip压缩文件接口源码)
  • SLAM:未来智能科技的核心——探索多传感器融合的无限可
  • [蓝桥杯 2024 省 C] 回文数组
  • LeetCode199. 二叉树的右视图(2024秋季每日一题 47)
  • Linux 权限的理解
  • 前端发送请求格式
  • 1024——视触觉传感器GelSight的前世今生
  • 系统移植相关概念总结
  • 力扣周赛第420场 中等 3325.字符至少出现k次的子字符串 I
  • C语言程序设计:现代设计方法习题笔记《chapter4》
  • java的maven打包插件来了,package一键打包exe、dmg、rpm等