mybatis/plus 入门1 mapper.xml文件配置编写 约束模板, 一对多 , 多对一

本文介绍了Mybatis/Plus中Mapper.xml文件的配置,包括DTD约束,以及如何进行一对多和多对一的多表联合查询。讨论了一种通过两次查询的备选方案,但认为其不够实用。

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

mapper.xml  模板文件的DTD约束

<?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">
<mapper namespace="com.kidcools.cn.mapper.TujiMapper">

mapper.xml  一对多查询  多表联合查询

<mapper namespace="com.kidcools.cn.mapper.TujiMapper">
    <resultMap id="map1" type="com.kidcools.cn.Entity.Tuji">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="jigou" column="jigou"/>
        <result property="pics" column="pics"/>
        <result property="userId" column="userId"/>
        <result property="uploadTime" column="upload
<think>好的,我现在要解决用户关于MyBatis-Plus项目中mapper.xml文件存放位置的问题。首先,我需要回顾一下MyBatisMyBatis-Plus的基本知识,确保自己理解正确。 用户提到的引用中有几个关键点。引用[1]和[2]提到mapper-locations配置项,通常是在application.yml或application.properties中设置。例如,classpath:mapper/*.xml或者更具体的路径如classpath:com/xyxy/srb/core/mapper/xml/*.xml。这说明配置文件的位置需要与这个路径匹配。 引用[3]指出MyBatis-Plus可以不用写mapper.xml,但用户显然需要用到自定义SQL,所以必须配置。而引用[4]提到了xml文件中的配置问题,但用户的问题是关于存放位置,可能相关但次要。 接下来,我需要确定常见的存放位置。传统MyBatis项目通常将mapper.xml放在src/main/resources下的对应包路径,比如resources/mapper目录。而在Maven或Gradle项目中,src/main/java下的xml文件默认不会被复制到classpath,除非特别配置。但用户引用[2]提到有人将mapper.xml放在src/main/java目录下,这可能通过配置pom.xml的resources插件实现,不过这可能引发问题,需要确认是否正确。 最佳实践应该是什么?根据官方文档或社区推荐,通常建议将xml文件放在resources目录下的对应包结构中,这样构建工具会自动包含它们。例如,resources/com/example/mapper/xxx.xml,并在配置中指定mapper-locations: classpath*:com/example/mapper/**/*.xml。 同时,需要考虑到模块项目的情况,如果模块结构复杂,可能需要使用classpath*:来确保所有模块的xml文件都被扫描到。 此外,需要注意yml配置中的路径是否正确,比如是否使用了正确的通配符,路径分隔符是否使用/而不是.等。 可能的错误情况包括:路径配置错误导致xml文件未被扫描到,文件放置位置错误导致编译后不存在于target/classes目录,或文件名、命名空间与Mapper接口不匹配。 最后,总结步骤:确定存放位置(resources目录下的对应包结构),正确配置mapper-locations,验证构建后的文件是否被正确打包,检查日志是否有加载失败的提示。</think>在MyBatis-Plus项目中,$mapper.xml$ 文件的存放位置需遵循以下最佳实践: --- ### 1. **存放路径的两种常见方式** #### **方式一:`src/main/resources` 目录下** - **推荐路径**:`src/main/resources/mapper/*.xml` 或按包结构分类:`src/main/resources/com/example/mapper/*.xml` - **配置示例**(在 `application.yml` 中): ```yaml mybatis-plus: mapper-locations: classpath:mapper/*.xml ``` 若按包结构存放: ```yaml mybatis-plus: mapper-locations: classpath*:com/example/mapper/**/*.xml ``` - **优势**:Maven/Gradle默认会将 `resources` 目录下的文件打包到 `classpath`,无需额外配置[^2][^3]。 #### **方式二:`src/main/java` 目录下** - **路径示例**:`src/main/java/com/example/mapper/xml/*.xml` - **配置示例**: ```yaml mybatis-plus: mapper-locations: classpath*:com/example/mapper/xml/*.xml ``` - **关键步骤**:需在 `pom.xml` 中添加配置,确保 XML 文件被编译到 `target/classes`: ```xml <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` - **风险**:可能导致 Java 代码XML 文件混杂,降低可维护性[^2]。 --- ### 2. **最佳实践建议** 1. **优先选择 `resources` 目录** 将 XML 文件与 Java 代码分离,避免路径配置冲突。 2. **使用通配符 `classpath*:`** 在模块项目中确保扫描到所有路径,例如: ```yaml mybatis-plus: mapper-locations: classpath*:mapper/**/*.xml ``` 3. **检查编译后的 `target/classes`** 确保 XML 文件最终出现在 `target/classes/mapper` 或对应包路径中[^4]。 --- ### 3. **常见问题排查** - **报错 “Invalid bound statement (not found)”** 通常由 XML 文件未被扫描到或命名空间与 Mapper 接口不匹配导致[^4]。 - **路径配置错误示例** 错误:`classpath:com.example.mapper/*.xml`(使用 `.` 分隔路径) 正确:`classpath:com/example/mapper/*.xml`(使用 `/` 分隔路径) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值