深入理解 mapper-locations

mybatis-plus.mapper-locations: classpath*:/mapper/**/*.xml 是 MyBatis/MyBatis-Plus 在 Spring Boot 配置文件(如 application.yml 或 application.properties)中的一项关键配置,用于指定 MyBatis Mapper XML 文件的存放路径。以下是详细解释:

1. 配置含义

mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml
  • 作用:告诉 MyBatis/MyBatis-Plus 去哪里扫描并加载 SQL 映射文件(即 *Mapper.xml或者 *Dao.xml文件)。

  • 值解析

    • classpath*::从所有类路径(包括依赖的 JAR 文件)中搜索。

    • /mapper/**/*.xml:匹配 resources/mapper/ 目录及其子目录下的所有 .xml 文件。

2. 为什么需要这个配置?

  • 默认行为
    MyBatis 默认会尝试加载与 Mapper 接口同名的 XML 文件(如 UserDao.java 对应 UserDao.xml),但需要明确指定 XML 的存放路径。

  • 灵活定位
    如果你的 XML 文件不放在默认位置(如 resources/com/example/dao/),需要通过此配置自定义路径。

3. 常见配置示例

(1) 多路径匹配
mybatis-plus:mapper-locations: - classpath*:/mapper/**/*.xml- classpath*:/com/example/custom/**/*.xml

支持多个路径,用列表形式表示。

(2) 不同项目结构
  • 如果 XML 文件直接放在 resources/mapper/ 下:

mybatis-plus:mapper-locations: classpath*:mapper/*.xml
  •  如果 XML 文件按模块分包:
mybatis-plus:mapper-locations: classpath*:com/example/**/dao/*.xml

4. 与 @MapperScan 的关系

  • mapper-locations:告诉 MyBatis XML 文件在哪里

  • @MapperScan:告诉 Spring Mapper 接口在哪里(扫描 DAO 接口)。
    两者需配合使用,例如:

@SpringBootApplication
@MapperScan("com.example.dao") // 扫描接口
public class App {}
mybatis-plus:mapper-locations: classpath*:com/example/dao/*.xml  # 扫描 XML

5. 注意事项

  1. 路径通配符

    • **:匹配多级目录(如 mapper/user/UserMapper.xml)。

    • *:匹配单级目录或文件名(如 mapper/*.xml)。

  2. 文件命名

    • XML 文件名通常与 Mapper 接口名一致(如 UserMapper.java 对应 UserMapper.xml)。

  3. 优先级

    • 如果同时存在注解(如 @Select)和 XML,XML 优先级更高

  4. 资源过滤

    • 确保 Maven 将 XML 文件复制到 target/classes 或构建输出目录。

 

6. 如何验证配置生效?

  1. 检查日志
    启动时查看 MyBatis 日志,是否加载了预期的 XML 文件:

[MyBatis] Mapped SQL statement: com.example.dao.UserMapper.selectById
  1. 解压 JAR 检查
    打包后解压 JAR,确认 XML 文件在指定路径下(如 BOOT-INF/classes/mapper/UserMapper.xml)。

  2. 故意写错路径
    修改为一个不存在的路径(如 classpath*:/nonexist/**/*.xml),如果启动时报 BindingException,说明原配置已生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电容的作用

使用多个电容是从电容的实际等效模型去考虑的(也就是从SI,信号完整性方面)。只考虑一个实际电容时,它的阻抗曲线是一个类似于倒三角形的形状,只在谐振频率点(与等效串联电感形成)处的阻抗最小。因此相当于只在这一个频率点处及附近…

移植的本质是什么

有断时间我就在想,为什么freertos,lvgl等等的移植都是把库文件放进来,直接点击编译,然后把bug都处理完成就移植成功了,为什么呢? 明明我一个函数都没调用,为什么会有一堆错误,莫名其…

广告场景下的检索平台技术

检索方向概述 数据检索领域技术选型大体分为SQL事务数据库、NoSQL数据库、分析型数据库三个类型。 SQL数据库的设计思路是采用关系模型组织数据,注重读写操作的一致性,注重数据的绝对安全。为了实现这一思路,SQL数据库往往会牺牲部分性能&…

高频PCB设计如何选择PCB层数?

以四层板为例,可以第一层和第二层画信号,作为信号层。 第三层可以走电源,然后第四层走GND 但是更可以第一层和第三层画信号。第二层可以走电源,然后第四层走GND 用中间的电源层以及地层可以起到屏蔽的作用,有效降低寄…

[Linux_69] 数据链路层 | Mac帧格式 | 局域网转发 | MTU MSS

目录 0.引入 1.以太网帧格式 2.重谈局域网转发的原理(基于协议) 小结 3.认识MTU 3.1MTU对IP协议的影响 3.2MTU对UDP协议的影响 3.3MTU对于TCP协议的影响 0.引入 在去年的这篇文章中,我们有对网络进行过一个概述[Linux#47][网络] 网络协议 | TCP/IP模型 | 以…

vue2 provide 后 inject 数据不是响应式的,不实时更新

今天用 provide 后&#xff0c;inject 获取数据时不是实时更新的&#xff0c;获取的不是更新后的值 祖父组件 <div style"text-align: left !important;"><button click"change">更改</button> </div>data() {return {name: ini…

洛谷---P1629 邮递员送信

题目描述 有一个邮递员要送东西&#xff0c;邮局在节点 1。他总共要送 n−1 样东西&#xff0c;其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙&#xff0c;因此所有的道路都是单行的&#xff0c;共有 m 条道路。这个邮递员每次只能带一样东西&#xff0c;并且运…

2025年LangChain(V0.3)开发与综合案例

LangChain是什么&#xff1f; 在实际企业开发中&#xff0c;大模型应用往往比简单的问答要复杂得多。如果只是简单地向大模型提问并获取回答&#xff0c;那么大模型的许多强大功能都没有被充分利用。 要开始使用LangChain&#xff0c;首先需要安装相关的库&#xff1a; pip …

十分钟了解 @MapperScan

MapperScan 是 MyBatis 和 MyBatis-Plus 提供的一个 Spring Boot 注解&#xff0c;用于自动扫描并注册 Mapper 接口&#xff0c;使其能够被 Spring 容器管理&#xff0c;并与对应的 XML 或注解 SQL 绑定。它的核心作用是简化 MyBatis Mapper 接口的配置&#xff0c;避免手动逐个…

深度解析 MindTorch:无缝迁移 PyTorch 到 MindSpore 的高效工具

在深度学习领域&#xff0c;框架的选择往往取决于开发者的习惯、硬件支持以及项目需求。PyTorch 作为当前最受欢迎的深度学习框架之一&#xff0c;以其动态图机制和简洁的 API 设计深受开发者喜爱。然而&#xff0c;随着昇腾硬件的崛起&#xff0c;如何高效地利用昇腾的强大计算…

[250506] Auto-cpufreq 2.6 版本发布:带来增强的 TUI 监控及多项改进

目录 Auto-cpufreq 2.6 版本发布&#xff1a;带来增强的 TUI 监控及多项改进 Auto-cpufreq 2.6 版本发布&#xff1a;带来增强的 TUI 监控及多项改进 Auto-cpufreq&#xff0c;一款适用于 Linux 的免费开源自动 CPU 速度与功耗优化器&#xff0c;已发布其最新版本 2.6。该工具…

Linux 更改内存交换 swap 为 zram 压缩,减小磁盘写入

1、查看当前 swap 的方式 swapon --show 我这里是默认的 swap 文件&#xff0c;大小为 2G。 2、安装 zram Ubuntu 下&#xff1a; sudo apt install zram-tools安装后默认会启动&#xff1a; 3、关闭默认的 swap 文件 sudo swapoff /swapfile 其次是关闭 /etc/fstab 中的 …

ORCAD打印pdf

1 笔记本电脑绑定了打印机&#xff0c;要改成这个

C++中指针使用详解(4)指针的高级应用汇总

C 中指针的高级应用非常丰富&#xff0c;掌握这些内容能让你写出更高性能、更底层控制力强的代码。下面是应用模块梳理和例子讲解。 目录预览 函数指针与回调机制指针数组 vs 数组指针指针与类成员函数&#xff08;成员函数指针&#xff09;智能指针&#xff08;unique_ptr, s…

图像处理软件imgPro—调参救星!

推荐一款图像处理软件imgPro&#xff0c;该软件是逛B站时偶然间发现&#xff0c;虽然up主是新号&#xff0c;但是视频中看起来非常实用&#xff01; 核心是多种算法高效调参&#xff0c;亮点是自动生成源码&#xff01;这您受得了吗&#xff1f;调试之后&#xff0c;直接复制代…

DOM基础学习

一、DOM文档对象模型 通常将DOM看作一颗“树”&#xff0c;DOM将整个文档看作一颗“家谱树 ” 二、对象 用户定义的对象内建对象&#xff08;Array、Date、Math&#xff09;宿主对象 三、节点 node 元素节点&#xff08;element node&#xff09;文本节点&#xff08;text…

初识人工智能、机器学习、深度学习和大模型

文章目录 1. 前言2. 相关概念3. 层级关系4. 应用场景对比4. 实际案例 初识人工智能、机器学习、深度学习和大模型 1. 前言 之前经常听人说AI、机器学习&#xff0c;深度学习之类的词汇&#xff0c;总是傻傻的不了解他们的区别&#xff0c;近来有空&#xff0c;来通俗说说个人看…

n8n系列(1)初识n8n:工作流自动化平台概述

1. 引言 随着各类自动化工具的涌现,n8n作为一款开源的工作流自动化平台,凭借其灵活性、可扩展性和强大的集成能力,正在获得越来越多技术团队的青睐。 本文作为n8n系列的开篇,将带您全面了解这个强大的自动化平台,探索其起源、特性以及与其他工具的差异,帮助您判断n8n是否…

Linux:web服务

一、nginx的安装及启用 1、为主机配置IP和搭建软件仓库 &#xff08;1&#xff09;IP的配置 &#xff08;2&#xff09;搭建软件仓库 2、 web服务的安装与启用 &#xff08;1&#xff09;nginx的端口 更改nginx端口号 效果 &#xff08;2&#xff09; 默认发布目录 修改默认发…

用卷积神经网络 (CNN) 实现 MNIST 手写数字识别

在深度学习领域&#xff0c;MNIST 手写数字识别是经典的入门级项目&#xff0c;就像编程世界里的 “Hello, World”。卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;作为处理图像数据的强大工具&#xff0c;在该任务中展现出卓越的性能。本…