mybatis工作原理详解

作者: 星辰大海的精灵 | 来源:发表于2024-03-14 09:14 被阅读0次

    MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    ### MyBatis 工作原理:

    1. **配置 SQL 映射文件**:MyBatis 首先通过 SQL 映射文件来定义 SQL 语句和对象之间的映射关系。

    2. **创建 SQL 会话工厂**:通过配置文件(mybatis-config.xml)或注解来创建 SqlSessionFactory,它是 MyBatis 的核心接口。

    3. **创建 SQL 会话**:从 SqlSessionFactory 中获取 SqlSession,SqlSession 是一个接口,可以执行已经映射的 SQL 语句。

    4. **执行 SQL 语句**:通过 SqlSession 的 API 执行 SQL 语句,可以执行映射的 SQL 语句并返回结果。

    5. **处理结果**:将执行 SQL 语句的结果映射到对象中。

    ### 示例代码:

    假设我们有一个用户表(user),我们想要实现用户信息的增删改查操作。

    #### 1. 配置文件 `mybatis-config.xml`

    ```xml

    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    ```

    #### 2. Mapper 文件 `BlogMapper.xml`

    ```xml

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    select * from Blog where id = #{id}

    ```

    #### 3. 映射接口 `BlogMapper.java`

    ```java

    package org.mybatis.example;

    public interface BlogMapper {

    Blog selectBlog(int id);

    }

    ```

    #### 4. 实体类 `Blog.java`

    ```java

    package org.mybatis.example;

    public class Blog {

    private int id;

    private String title;

    private String content;

    // getter 和 setter 方法

    }

    ```

    #### 5. 测试类 `TestMyBatis.java`

    ```java

    import org.apache.ibatis.session.SqlSession;

    import org.apache.ibatis.session.SqlSessionFactory;

    import org.junit.Test;

    public class TestMyBatis {

    @Test

    public void testBlog() throws Exception {

    // 获取 SqlSessionFactory

    SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();

    try (SqlSession session = sqlSessionFactory.openSession()) {

    // 获取 Mapper 接口的实例

    BlogMapper mapper = session.getMapper(BlogMapper.class);

    // 执行查询

    Blog blog = mapper.selectBlog(101);

    System.out.println(blog.getTitle());

    }

    }

    }

    ```

    相关文章

      网友评论

        本文标题:mybatis工作原理详解

        本文链接:https://www.haomeiwen.com/subject/klrpzdtx.html