记录SpringBoot项目的一次报错
Woody

Woody @woodyxin

About: all my ex living in taxes

Joined:
Apr 19, 2025

记录SpringBoot项目的一次报错

Publish Date: Jun 26
0 0

当然,下面是帮你总结的关于 MyBatis XML 格式错误导致整个项目启动失败的博客内容,格式是 Markdown,方便你直接用:

# MyBatis 多个 Mapper XML 文件加载时格式错误导致启动失败问题总结

在使用 MyBatis 时,通常会在 `application.yml` 中通过 `mapper-locations` 配置一次性加载多个 Mapper XML 文件,例如:

```

yaml
mybatis:
  mapper-locations: classpath:mapper/*.xml


Enter fullscreen mode Exit fullscreen mode

这意味着启动时,MyBatis 会尝试加载匹配路径下的所有 XML 映射文件。


遇到的问题

  • 某个 Mapper XML 文件(例如 BookMapper.xml)缺少必要的 XML 声明或 DOCTYPE 声明,格式不规范。
  • 启动时,MyBatis 报错并抛出如下异常:


Failed to parse mapping resource: '...BookMapper.xml'
Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 70; 
文档根元素 "mapper" 必须匹配 DOCTYPE 根 "null"。


Enter fullscreen mode Exit fullscreen mode
  • 导致整个 Spring Boot 项目启动失败,其他正确的 Mapper 文件(如 MovieMapper.xml)无法正常加载。

为什么会导致整个项目启动失败?

  • MyBatis 在启动时会同时加载所有 Mapper XML 文件,并对它们进行解析验证。
  • 任何一个 XML 文件格式错误,都会抛出异常,中断整个 SqlSessionFactory 的创建。
  • 因此,项目启动过程中,MyBatis 会因单个 Mapper 文件错误而导致全部映射加载失败,进而引发 Spring Boot 启动失败。

解决方案

  1. 确保所有 Mapper XML 文件格式规范完整,包含:

xml
   <?xml version="1.0" encoding="UTF-8" ?>
   <!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


Enter fullscreen mode Exit fullscreen mode
  1. 如果某个 XML 文件暂时未准备好,可以先移除或移出该文件,保证其他 Mapper 文件正常加载,定位问题。

  2. 使用 IDE 或 XML 校验工具检查所有 Mapper XML 的格式和结构。


小结

Mapper XML 文件 是否规范 是否影响启动
BookMapper.xml 缺少声明 导致整个启动失败
MovieMapper.xml 正确 能正常加载,但不被执行

只要有一个 Mapper XML 文件格式错误,整个 MyBatis 的映射加载都会失败。


希望这篇总结能帮助你更好地理解 MyBatis 的启动加载机制,避免格式错误导致启动失败的问题!


如果你觉得有用,欢迎点赞收藏!




需要我帮你写完整的 `BookMapper.xml` 规范范例吗?


Enter fullscreen mode Exit fullscreen mode

Comments 0 total

    Add comment