MyBatis的前身是iBATIS,是Clinton Begin在2001年发起的一个开源项目,最初侧重于密码软件的开发,后来发展成为一款基于Java的持久层框架。2004年,Clinton将iBATIS的名字和源码捐赠给了Apache软件基金会。2010年,核心开发团队决定离开Apache软件基金会,并且将iBATIS改名为MyBatis。
MyBatis是一款优秀的支持自定义SQL查询、存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。MyBatis可以使用xml或注解进行配置和映射,MyBatis通过将参数映射到配置的SQL形成最终执行的SQL语句,最后将执行SQL的结果映射成Java对象返回。
与其他的ORM框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂查询以及某数据库的专有特性。适合对遗留数据库、不规范的数据库进行操作。
与JDBC相比较,MyBatis简化了大量的代码,SQL语句在一行代码中即可执行。MyBatis提供了一个映射引擎,声明式的将SQL语句的执行结果与对象映射。
MyBatis支持声明式数据缓存,当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被缓存在高速缓存中,后面再执行这条语句时,就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认情况下基于Java HashMap的缓存实现,以及用于OSCache、ECache、Hazelcast、Memcached连接的默认连接器,同时还提供了API供其他缓存实现使用。