定义mapper.xml文件
时间: 2025-06-12 11:09:47 浏览: 20
<think>嗯,用户想了解如何定义MyBatis的mapper.xml文件配置,这在数据库映射开发中很关键。用户可能是位Java开发者,正在搭建MyBatis项目时遇到了配置问题。引用[2]的核心结构可以参考,但要注意用户真正需要的是实用清晰的配置指导。引用[2]中提到<mapper>标签必须包含命名空间(namespace),这确实是最基础的规范。命名空间应该对应Mapper接口的全限定名,比如com.example.mapper.UserMapper。而引用[1]中提到的mybatis/*Mapper.xml配置路径示例,这关系到配置文件存放位置的实践经验,Spring项目通常放在resources/mybatis/目录下。用户可能更关心SQL语句的具体写法。引用[4]展示了<select>标签的完整示例,参数类型(resultMap)和参数格式(jdbcType=INTEGER)都很重要。另外引用[3]提示了SQL符号冲突的解决方案:在大于小于号等符号冲突时,需要用<![CDATA[]]>包裹或者转义符替换。这点在实际开发中很实用,特别是处理日期范围查询时经常遇到。根据这些信息,应该分模块讲解:首先是XML头部定义和命名空间等基础配置;然后是增删改查标签的使用细节;最后补充SQL编写技巧和注意事项。配置示例要体现通用性,比如在<select>中同时展示普通条件和范围查询的写法,帮助用户覆盖常见场景。§§相关问题§§思考:用户接下来可能会问如何把mapper.xml和注解配置混合使用(引用[1]提到的),或者缓存配置(引用[2]中<cache>标签未展开的部分)。也可能关心动态SQL编写技巧,因为用户的问题隐含对SQL配置复杂度的担忧。可以准备几个方向的问题:文件路径修改、解决标签冲突的实践方案、结果集映射的深度配置等。现在组织回答时要特别注意:所有行内SQL语法说明都要用$...$格式;完整配置示例要单独成段并加```标记;中文术语要准确,比如“预编译”不要写成“预编译处理”;最后自然添加引用标识。避免直接复制引用内容,而是提取核心点重新组织成用户需要的实用指南。</think>
以下是MyBatis 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">
<mapper namespace="com.example.mapper.UserMapper"> <!-- 1. 必填命名空间 -->
<!-- 配置内容区 -->
</mapper>
```
> **关键配置说明**
> 1. `namespace`:对应Mapper接口的全限定名,需与Java接口名一致[^2]
> 2. DTD声明:固定为MyBatis官方提供的3.0版本约束
---
### 二、基础配置示例
#### 1. 查询语句
```xml
<select id="selectUserById"
parameterType="Integer"
resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id,jdbcType=INTEGER}
</select>
```
> **参数解析**
> - `id`:对应Mapper接口方法名
> - `#{ }`:MyBatis参数占位符,`jdbcType`指定数据库类型(推荐)
#### 2. 插入语句(自增主键)
```xml
<insert id="insertUser" parameterType="User"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO user(name,email)
VALUES(#{name},#{email})
</insert>
```
> **注意**:`useGeneratedKeys`开启自增主键映射[^4]
---
### 三、特殊字符处理技巧
当SQL包含 `<`、`>` 等XML保留字符时:
```xml
<select id="findActiveUsers">
<!-- 使用CDATA避免符号冲突 -->
<![CDATA[
SELECT * FROM user
WHERE status <> 0
AND create_time < NOW()
]]>
</select>
```
> **替代方案**:使用转义符如 `<`(`<`)、`>`(`>`)[^3]
---
### 四、动态SQL示例(条件查询)
```xml
<select id="searchUsers" parameterType="map">
SELECT * FROM user
<where>
<if test="name != null">
AND name LIKE CONCAT('%',#{name},'%')
</if>
<if test="minAge != null">
AND age >= #{minAge} <!-- 使用转义符 -->
</if>
</where>
</select>
```
---
### 五、Spring整合配置
```xml
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations"
value="classpath*:mybatis/*Mapper.xml"/> <!-- XML路径 -->
<property name="typeAliasesPackage"
value="com.example.model"/> <!-- 实体类包扫描 -->
</bean>
```
> **最佳实践**:将XML放在`resources/mybatis/`目录下[^1]
[^1]: XML文件路径配置规范
[^2]: 命名空间与标签基础定义
[^3]: XML特殊字符处理方案
[^4]: 参数映射与动态SQL技巧
阅读全文
相关推荐



















