在 Spring Boot 中,MyBatis 的 Mapper 文件是一个 XML 文件,它定义了 SQL 映射和操作数据库所需的 SQL 语句。这些文件通常与数据库表的结构相对应,并提供了执行 CRUD(创建、读取、更新、删除)操作所需的 SQL 语句。
### 如何书写 MyBatis 的 Mapper 文件:
1. **定义命名空间**:
Mapper 文件的根元素 `<mapper>` 的 `namespace` 属性应该指定为 SQL 映射的 Java 接口的完全限定名。
2. **添加 SQL 映射**:
在 `<mapper>` 元素内部,可以定义各种 SQL 映射元素,如 `<select>`、`<insert>`、`<update>` 和 `<delete>`。
3. **使用参数和结果映射**:
SQL 语句可以使用 `#{}` 来引用参数,并使用 `resultMap` 来映射查询结果到 Java 对象。
以下是一个简单的 MyBatis Mapper 文件示例:
```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">
<!-- 定义结果映射 -->
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="email" property="email"/>
</resultMap>
<!-- 查询用户 -->
<select id="findUserById" resultMap="BaseResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
<!-- 插入用户 -->
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>
<!-- 更新用户 -->
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUser" parameterType="java.lang.Integer">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
```
在这个例子中,我们定义了一个名为 `UserMapper` 的接口,它对应于 `com.example.entity.User` 实体类。我们为这个实体类创建了一个 `resultMap`,并定义了四个 SQL 映射:`findUserById`(查询用户)、`insertUser`(插入用户)、`updateUser`(更新用户)和 `deleteUser`(删除用户)。
### MyBatis 的全局配置文件:
MyBatis 的全局配置文件通常名为 `mybatis-config.xml`,它包含了 MyBatis 的全局设置和配置。这个文件允许你配置 MyBatis 的行为,例如:
- 设置日志级别
- 配置类型别名和类型处理器
- 定义缓存和懒加载策略
- 配置事务管理器和数据源
- 开启或关闭下划线到驼峰命名法的自动转换
以下是一个简单的 `mybatis-config.xml` 文件示例:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 开启下划线到驼峰命名法的自动转换 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 配置类型别名 -->
<typeAliases>
<package name="com.example.entity"/>
</typeAliases>
<!-- 配置 Mapper 文件的位置 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
```
在这个配置文件中,我们开启了下划线到驼峰命名法的自动转换,配置了类型别名,指定了 Mapper 文件的位置。这样,当你在 Spring Boot 应用中使用 MyBatis 时,这些全局配置将影响整个 MyBatis 框架的行为。