第1章 MyBatis入门
1.1 MyBatis简介
MyBatis的前身是iBATIS,是Clinton Begin在2001年发起的一个开源项目,最初侧重于密码软件的开发,后来发展成为一款基于 Java的持久层框架。2004年,Clinton将iBATIS的名字和源码捐赠给了Apache软件基金会,接下来的6年中,开源软件世界发生了巨大的变化,一切开发实践、基础设施、许可,甚至数据库技术都彻底改变了。2010年,核心开发团队决定离开Apache软件基金会,并且将iBATIS改名为MyBatis。
MyBatis是一款优秀的支持自定义SQL查询、存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。MyBatis可以使用XML或注解进行配置和映射,MyBatis通过将参数映射到配置的SQL形成最终执行的SQL语句,最后将执行SQL的结果映射成Java对象返回。
与其他的ORM(对象关系映射)框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis将会是一个不错的选择。
与JDBC相比,MyBatis简化了相关代码,SQL语句在一行代码中就能执行。MyBatis提供了一个映射引擎,声明式地将SQL语句的执行结果与对象树映射起来。通过使用一种内建的类XML表达式语言,SQL语句可以被动态生成。
MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在高速缓存中,后面再执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis 提供了默认情况下基于 Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Memcached连接的默认连接器,同时还提供了API供其他缓存实现使用。
MyBatis官方GitHub地址为https://github.com/mybatis。在官方GitHub中可以看到MyBatis的多个子项目。在本书中,我们将学习以下内容。
· mybatis-3(https://github.com/mybatis/mybatis-3):MyBatis 源码,也是本书中主要讲解和使用的内容。
· generator(https://github.com/mybatis/generator):代码生成器,可以生成一些常见的基本方法,提高工作效率。
· ehcache-cache(https://github.com/mybatis/ehcache-cache):默认集成Ehcache的缓存实现。
· redis-cache(https://github.com/mybatis/redis-cache):默认集成Redis的缓存实现。
· spring(https://github.com/mybatis/spring):方便和Spring集成的工具类。
· mybatis-spring-boot(https://github.com/mybatis/mybatis-spring-boot):方便和Spring Boot集成的工具类。
除此之外还有大量和其他项目集成的子项目,如果有需要,学习本书内容之余可以自学其他相关的技术。