# mybatis-3.5.4
**Repository Path**: fujc2dev/mybatis-3.5.4
## Basic Information
- **Project Name**: mybatis-3.5.4
- **Description**: 源码学习笔记
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-04-05
- **Last Updated**: 2026-02-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MyBatis 3.5.4
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects)为数据库中的记录。
本项目是 MyBatis 3.5.4 的源代码,并包含一些示例代码和自定义扩展。
## 项目特性
- **强大的动态 SQL**: 支持复杂的条件查询
- **对象关系映射**: 自动映射查询结果到 Java 对象
- **类型处理器**: 内置丰富的类型处理器,支持自定义类型转换
- **插件机制**: 支持通过插件扩展框架功能
- **缓存支持**: 提供一级和二级缓存
- **事务管理**: 灵活的事务管理机制
- **日志集成**: 支持多种日志框架
## 项目结构
```
src/main/java/org/apache/
├── application/ # 示例应用代码
│ ├── factory/ # 自定义对象包装器工厂
│ ├── mapper/ # Mapper 接口示例
│ └── model/ # 实体类示例
└── ibatis/ # MyBatis 核心代码
├── annotations/ # 注解定义
├── binding/ # Mapper 绑定
├── builder/ # 构建器 (XML/注解)
├── cache/ # 缓存实现
├── cursor/ # 游标支持
├── datasource/ # 数据源
├── executor/ # 执行器
├── io/ # IO 工具
├── jdbc/ # JDBC 工具
├── logging/ # 日志集成
├── mapping/ # 映射配置
├── parsing/ # XML 解析
├── plugin/ # 插件机制
├── reflection/ # 反射工具
├── scripting/ # 脚本语言支持
├── session/ # 会话管理
├── transaction/ # 事务管理
└── type/ # 类型处理器
```
## 技术要求
- JDK 1.8 或更高版本
- Maven 3.0 或更高版本
## 快速开始
### 1. 克隆项目
```bash
git clone https://gitee.com/fujc2dev/mybatis-3.5.4.git
cd mybatis-3.5.4
```
### 2. 编译项目
```bash
mvn clean compile
```
### 3. 运行示例
项目包含示例代码,可以通过以下方式运行:
```bash
mvn exec:java -Dexec.mainClass="org.apache.application.Programs"
```
## 使用示例
### 1. 配置 MyBatis
在 `src/main/resources/mybatis-config.xml` 中配置数据源:
```xml
```
### 2. 创建 Mapper 接口
```java
public interface UserMapper {
User selectById(int id);
List selectAll();
int insert(User user);
int update(User user);
int delete(int id);
}
```
### 3. 编写 XML 映射文件
```xml
```
### 4. 使用 SqlSession
```java
SqlSessionFactory factory = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("mybatis-config.xml"));
try (SqlSession session = factory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
}
```
## 核心组件说明
### SqlSessionFactory
SqlSessionFactory 是 MyBatis 的核心工厂类,用于创建 SqlSession 实例。
### SqlSession
SqlSession 是 MyBatis 执行 SQL 的主要接口,每个线程应该有独立的 SqlSession 实例。
### Mapper
Mapper 是 DAO 接口,MyBatis 通过动态代理自动实现该接口。
### Executor
Executor 负责 SQL 语句的执行和缓存管理。
### ResultHandler
ResultHandler 用于处理查询结果。