# 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 用于处理查询结果。