likes
comments
collection
share

《Mybatis 手撸专栏》第3章:实现映射器的注册和使用

作者站长头像
站长
· 阅读数 13

Mybatis 手撸专栏

第3章:实现映射器的注册和使用

欢迎来到《Mybatis 手撸专栏》的第3章!在本章中,我们将深入探讨如何实现 Mybatis 映射器的注册和使用。映射器是 Mybatis 中负责定义数据库访问方法和 SQL 语句映射的接口,通过映射器,我们可以更方便地进行数据库操作。

在本文中,我将向您展示如何手动实现 Mybatis 映射器的注册和使用,并提供示例代码以供参考。

1. 映射器接口定义

首先,让我们定义一个映射器接口,用于访问数据库中的用户信息。假设我们有一个 User 实体类,其包含 idname 属性。我们将创建一个名为 UserMapper 的接口,并在其中定义一些常用的数据库访问方法。

public interface UserMapper {
    User getUserById(int id);

    List<User> getAllUsers();

    void insertUser(User user);

    void updateUser(User user);

    void deleteUser(int id);
}

在上述接口中,我们定义了获取单个用户信息、获取所有用户信息、插入用户信息、更新用户信息以及删除用户的方法。这些方法将用于执行对应的 SQL 语句。

2. 映射器 XML 文件

接下来,让我们编写映射器的 XML 文件,其中包含了 SQL 语句以及结果映射配置。对于 UserMapper 接口,我们创建一个名为 UserMapper.xml 的映射文件。

<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="getUserById" resultType="com.example.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <select id="getAllUsers" resultType="com.example.model.User">
        SELECT * FROM user
    </select>

    <insert id="insertUser">
        INSERT INTO user (id, name) VALUES (#{id}, #{name})
    </insert>

    <update id="updateUser">
        UPDATE user SET name = #{name} WHERE id = #{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

在上述 XML 文件中,我们使用了 <mapper> 标签指定了映射器的命名空间,并使用了不同的 SQL 标签定义了对应的 SQL 语句。注意,我们通过 id 属性为每个标签指定了唯一的标识符,以便在 Java 代码中进行调用。此外,我们还使用 resultType 属性定义了返回结果的类型。

3. 映射器注册和使用

3.1 映射器注册

在使用映射器之前,我们需要将其注册到 Mybatis 的配置中,以便让 Mybatis 知道我们要使用哪个映射器。在注册映射器之前,先让我们创建一个名为 MybatisConfig.xml 的配置文件。

<!-- MybatisConfig.xml -->
<configuration>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

在上述配置文件中,我们使用了 <mappers> 标签来定义要注册的映射器。在本例中,我们通过 <mapper> 标签的 resource 属性指定了映射器 XML 文件的路径。

接下来,在我们的 Java 代码中,我们需要加载这个配置文件并创建 SqlSessionFactory 对象,以便创建数据库会话。

public class MybatisApp {
    public static void main(String[] args) throws IOException {
        // 加载 Mybatis 配置文件
        InputStream inputStream = Resources.getResourceAsStream("MybatisConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 创建 SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 获取映射器代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        // 使用映射器方法进行数据库操作
        User user = userMapper.getUserById(1);
        System.out.println(user);

        List<User> userList = userMapper.getAllUsers();
        System.out.println(userList);

        User newUser = new User(2, "John Doe");
        userMapper.insertUser(newUser);

        newUser.setName("Jane Doe");
        userMapper.updateUser(newUser);

        userMapper.deleteUser(2);

        // 提交事务并关闭 SqlSession
        sqlSession.commit();
        sqlSession.close();
    }
}

首先,我们加载了 MybatisConfig.xml 配置文件,并使用 SqlSessionFactoryBuilder 构建了 SqlSessionFactory 对象。然后,我们通过 SqlSessionFactory 创建了 SqlSession 对象。

接着,我们使用 SqlSession 对象的 getMapper() 方法获取了映射器的代理对象。这样,我们就可以直接调用映射器的方法进行数据库操作了。

最后,我们展示了一些基本的数据库操作,如获取单个用户信息、获取所有用户信息、插入用户信息、更新用户信息以及删除用户。

4. 总结

通过本章的学习,我们了解了 Mybatis 映射器的注册和使用方法。我们首先定义了映射器接口,并在其中定义了数据库访问方法。然后,我们编写了映射器的 XML 文件,其中包含了 SQL 语句和结果映射配置。最后,我们通过注册映射器和使用映射器的代理对象,实现了数据库的增删改查操作。

希望本章的内容对您理解和使用 Mybatis 映射器有所帮助。下一章,我们将继续探讨 Mybatis 的更多重要功能,敬请期待!