文章目录
- 1、什么是MyBatis
- 2、Mybatis的发展历史
- 3、比Hibernate实现差,但Mybatis却最终胜利了
1、什么是MyBatis
MyBatis 是一款优秀的ORM持久层框架,它支持定制化 SQL、高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将数据库中的记录映射成 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)。
2、Mybatis的发展历史
ORM:对象关系映射(Object Relational Mapping) 主要是为了在编程中,用面向对象的方式跟数据库中的表添加对应的映射关系。
Clinton Begin(克林顿·贝让) 在 2001 年发起的开源项目iBatis, iBatis这个词的来源是 Internet 和 abatis(障碍物) 的组合。它是基于 SQL 映射完成ResultSet结果集和Java对象的转换。
2010 年 6 月 16 号被谷歌托管, 改名为 MyBatis。
3、比Hibernate实现差,但Mybatis却最终胜利了
开发软件大多离不开数据库操作,而最早操作数据库只能用Java 的 JDBC 然后做一系列的封装。包括后来出现的DBUtils 等框架。
但玩过JDBC的同学都知道,它不是面向对象编程,不是围绕我们业务POJO对象编程,而是围绕数据库表的结果集操作,这显然不符合面向对象的设计思想。
一边是java面向对象,一边是数据库SQL、结果集,能否把它们形成转换呢?让开发人员统一操作的是Java对象。
于是ORM就应运而生。
ORM:对象关系映射(Object Relational Mapping) 主要是为了在编程中,用面向对象的方式跟数据库中的表添加对应的映射关系。
而这一时期的王者也因此而诞生,那最著名就是Hibernate(2001.11诞生,两年时间登顶,无限风光)。它实现了全ORM,这样开发者就可以操作对象,实现数据库表的CRUD操作。但实际开发中,简单CRUD是可以,但复杂的、特别是复杂的查询SQL又如何实现呢?
它又发明了一个HQL(Hibernate Query Language)。它可厉害了是面向对象的方式。
例如:
查询user表,
SQL:select * from tb_user;
HQL:from User;
表面上我们都成了操作对象,但在实际开发中,复杂的多表查询HQL语句太难写了,即使一个高手,也半天写不出来,即使写出来,也没有人能维护。所以这点Hibernate为面向对象而面向对象,最终就死在这点上。
相反Mybatis和它走了不同的路线,Mybatis一开始就没有抛弃SQL,而是始终留着。这样日常开发程序员都会SQL,特别复杂的SQL也不用改造直接使用。虽然因此MyBatis也被嘲笑称为半ORM框架,但实际开发反而效果更好。成为打败Hibernate的绝招。
看完大家有什么感觉?世事难料啊,Hibernate当年的风头远超Mybatis,一路把Mybatis逼近死胡同,可天意弄人,最终Hibernate底层构建基础错误,抛弃了SQL,最终快无人问津了。