MyBatis 官方子項目詳細說明及表格總結
1. 核心子項目說明
1.1 mybatis-3
- GitHub 鏈接:https://github.com/mybatis/mybatis-3
- 功能:
MyBatis 核心框架的源碼,提供 SQL 映射、動態 SQL、緩存、事務管理等核心功能。 - 主要功能:
- 支持 XML/注解配置。
- 提供
SqlSession
、Mapper
等核心接口。 - 支持一級緩存(本地會話緩存)和二級緩存(命名空間級緩存)。
- 適用場景:
所有 MyBatis 項目的基石,所有功能均基于此實現。
1.2 mybatis-generator
- GitHub 鏈接:https://github.com/mybatis/generator
- 功能:
代碼生成器,根據數據庫表自動生成Entity
、Mapper
、XML
等基礎代碼。 - 主要功能:
- 支持多種數據庫(MySQL、Oracle 等)。
- 可配置生成策略(如表名到類名的轉換規則)。
- 生成的代碼可作為項目基礎,減少重復勞動。
- 適用場景:
快速生成基礎 CRUD 代碼,提升開發效率。
1.3 mybatis-ehcache
- GitHub 鏈接:https://github.com/mybatis/mybatis-ehcache
- 功能:
Ehcache 集成模塊,將 Ehcache 作為 MyBatis 的二級緩存實現。 - 主要功能:
- 提供
EhcacheCache
類實現 MyBatis 緩存接口。 - 支持 Ehcache 的緩存策略(如過期時間、容量控制)。
- 提供
- 適用場景:
需要使用 Ehcache 作為分布式或本地緩存的場景。
1.4 mybatis-redis
- GitHub 鏈接:https://github.com/mybatis/mybatis-redis
- 功能:
Redis 集成模塊,將 Redis 作為 MyBatis 的二級緩存實現。 - 主要功能:
- 提供
RedisCache
類實現 MyBatis 緩存接口。 - 支持 Redis 的分布式緩存特性。
- 提供
- 適用場景:
需要分布式緩存或跨節點緩存共享的場景。
1.5 mybatis-spring
- GitHub 鏈接:https://github.com/mybatis/spring
- 功能:
Spring 集成工具,簡化 MyBatis 與 Spring 的整合。 - 主要功能:
- 提供
SqlSessionFactoryBean
、MapperScannerConfigurer
等 Spring 集成類。 - 支持聲明式事務管理。
- 提供
- 適用場景:
在 Spring 項目中使用 MyBatis 時簡化配置。
1.6 mybatis-spring-boot
- GitHub 鏈接:https://github.com/mybatis/spring-boot-starter
- 功能:
Spring Boot 集成模塊,提供自動配置和簡化配置的 starter。 - 主要功能:
- 自動配置
SqlSessionFactory
和Mapper
掃描。 - 支持通過
application.properties
簡化 MyBatis 配置。
- 自動配置
- 適用場景:
在 Spring Boot 項目中快速集成 MyBatis。
其他相關子項目
- mybatis-issues:MyBatis 問題跟蹤倉庫。
- mybatis-website:MyBatis 官網源碼。
- mybatis-oscached:舊版的 OSCache 集成模塊(已較少使用)。
- mybatis-dynamic-sql:提供動態 SQL 構建工具,減少 XML 配置。
2. 子項目對比表格
子項目名稱 | GitHub 鏈接 | 核心功能 | 適用場景 |
---|---|---|---|
mybatis-3 | mybatis-3 | MyBatis 核心框架,提供 SQL 映射、緩存、事務等基礎功能。 | 所有 MyBatis 項目的基礎,必須依賴。 |
mybatis-generator | mybatis-generator | 自動生成 Entity、Mapper、XML 等基礎代碼。 | 快速生成代碼,減少重復勞動。 |
mybatis-ehcache | mybatis-ehcache | 將 Ehcache 作為 MyBatis 的二級緩存實現。 | 需要使用 Ehcache 實現本地或分布式緩存的場景。 |
mybatis-redis | mybatis-redis | 將 Redis 作為 MyBatis 的二級緩存實現。 | 需要分布式緩存或跨節點緩存共享的場景。 |
mybatis-spring | mybatis-spring | 簡化 MyBatis 與 Spring 的整合(如 SqlSessionFactory 、Mapper 掃描)。 | 在 Spring 項目中使用 MyBatis 時減少配置。 |
mybatis-spring-boot | mybatis-spring-boot | 提供 Spring Boot 的自動配置和 starter,簡化 MyBatis 集成。 | 在 Spring Boot 項目中快速集成 MyBatis。 |
mybatis-dynamic-sql | mybatis-dynamic-sql | 提供動態 SQL 構建工具,減少 XML 配置。 | 需要動態 SQL 構建且希望減少 XML 依賴的場景。 |
3. 子項目依賴關系
子項目 | 依賴的核心模塊 | 依賴的第三方庫 |
---|---|---|
mybatis-3 | 無 | 無 |
mybatis-generator | mybatis-3 | Velocity(模板引擎)、Freemarker |
mybatis-ehcache | mybatis-3 | Ehcache |
mybatis-redis | mybatis-3 | Redis Client(如 Jedis/Lettuce) |
mybatis-spring | mybatis-3, Spring Framework | Spring Core、Spring JDBC |
mybatis-spring-boot | mybatis-spring, Spring Boot | Spring Boot Starter |
4. 使用示例
4.1 mybatis-spring-boot-starter 配置示例
# application.yml
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.entity
4.2 mybatis-generator 代碼生成示例
<!-- generatorConfig.xml -->
<generatorConfiguration><context id="DB2Target" targetRuntime="MyBatis3"><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mydb"userId="root"password="root"/><javaModelGenerator targetPackage="com.example.entity" /><sqlMapGenerator targetPackage="mapper" /><javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" /><table tableName="user" domainObjectName="User" /></context>
</generatorConfiguration>
5. 關鍵選擇建議
- 核心開發:必須依賴 mybatis-3。
- 代碼生成:使用 mybatis-generator 生成基礎代碼。
- 緩存需求:
- 本地緩存:mybatis-ehcache。
- 分布式緩存:mybatis-redis。
- Spring/Spring Boot 集成:
- Spring:mybatis-spring。
- Spring Boot:mybatis-spring-boot-starter。
6. 官方倉庫地址修正
用戶提供的部分鏈接存在拼寫錯誤,以下是修正后的正確鏈接:
- MyBatis 官方組織:https://github.com/mybatis
- mybatis-ehcache:https://github.com/mybatis/mybatis-ehcache
- mybatis-redis:https://github.com/mybatis/mybatis-redis
7. 學習路徑建議
- 基礎學習:從 mybatis-3 開始,掌握核心 API 和 XML 配置。
- 提升效率:使用 mybatis-generator 生成代碼,減少重復勞動。
- 緩存優化:根據需求選擇 mybatis-ehcache 或 mybatis-redis。
- 框架集成:
- Spring:學習 mybatis-spring。
- Spring Boot:使用 mybatis-spring-boot-starter。
通過組合這些子項目,可以快速構建高效、可維護的 MyBatis 項目。