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());
}
}
}
```
网友评论