技术研发汇集@IT·互联网

mybatis工作原理详解

2024-03-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());

}

}

}

```

上一篇 下一篇

猜你喜欢

热点阅读