mybatis的mapper源码
时间: 2023-10-19 21:05:51 浏览: 92
MyBatis 的 Mapper 模块主要由两部分组成:
1. Mapper 接口:Mapper 接口是一个 Java 接口,其中定义了各种 SQL 操作的方法,这些方法都有对应的 SQL 语句。
2. Mapper XML 文件:Mapper XML 文件是一个独立的 XML 文件,其中定义了与 Mapper 接口中方法对应的 SQL 语句以及参数的映射关系。
MyBatis 在解析 Mapper 接口和 Mapper XML 文件时,会通过 Java 动态代理技术动态生成 Mapper 接口的实现类,同时会将 Mapper XML 文件中定义的 SQL 语句解析成相应的 SQL 语句对象并存放在内存中,方便后续的操作。
Mapper 接口的源码:
```java
public interface UserMapper {
// 根据 ID 查询用户
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(Integer id);
// 添加用户
@Insert("INSERT INTO user(username,password) VALUES(#{username},#{password})")
int addUser(User user);
// 更新用户信息
@Update("UPDATE user SET username = #{username},password = #{password} WHERE id = #{id}")
int updateUser(User user);
// 根据 ID 删除用户
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(Integer id);
}
```
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">
<!-- 根据 ID 查询用户 -->
<select id="getUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 添加用户 -->
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO user(username,password) VALUES(#{username},#{password})
</insert>
<!-- 更新用户信息 -->
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE user SET username = #{username},password = #{password} WHERE id = #{id}
</update>
<!-- 根据 ID 删除用户 -->
<delete id="deleteUser" parameterType="java.lang.Integer">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
```
阅读全文