一.定义
(1)myBatis是用于操作数据库的持久层框架;
(2)iBatis实际上就是myBatis前身,它相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现;
(3)Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行。
二、区别
(1)mybatis
优点:
- 开发人员可以直接编写SQL,另外可以通过修改sql进行对数据库的优化;
- sql可以编写,灵活多变,容易维护,容易学习
缺点:
- 移植性不好,不支持数据库无关性,当数据库变更时需要编写多套代码;
- 需要配置全局配置文件和接口和SQL的映射文件
(2)Hibernate
- 标准的orm框架,开发人员不需要写sql;
- 支持数据库无关性,切换数据库无需重新修改sql,只需要修改方言即可
- 学习成本高,难于上手,需要对数据关系模型有良好的的基础
- 开发人员不能自主的进行sql优化
三、mybatis和ibatis语法上的区别
(1)两种框架均支持sql片段
(2)ibatis中##与mybatis中的#{}一样,$$与${}一样;
(3)判断语句
MyBatis的很简单,只要在where 或者if 的标签里面添加test=""就可以了,里面写判断条件了。
IBatis的就麻烦了许多了,它将每个都方法都进行了封装,如<isNull>。
例如:
isNull:判断property字段是否是null
<isNull prepend="and" property="id"> </isNull>