优点
1、简单易学
mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
2、灵活
mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL写在XML里,便于统一管理和优化。通过SQL基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
3、解除SQL与程序代码的耦合
通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。SQL和代码的分离,提高了可维护性。
4、提供映射标签,支持对象与数据库的ORM字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供XML标签,支持编写动态SQL
缺点
1、编写SQL语句时工作量很大,尤其是字段多,关联表多时,更是如此
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库
3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且也不太容易适应快速数据库修改。
4、二级缓存机制不佳
1.优点 简单: 易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。 灵活: 通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。 功能完整: 提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。 增强系统的可维护性: 通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
2.缺点 滞后性: 还没有明确对.NET2.0的支持。最新版本在2.0下编译可以,但有些单元测试不能通过。 不成熟,工程实践较少: IbatisNet在实际项目中的使用较少。 只是理论上可行. 半ORM,工具支持较少: 需要我们自己写sql,并且.NET下还未发现可以自动生成业务层类和配置文件的工具,这点和NHibernate不一样,NHibernate会为我们的数据库直接产生sql,并有一些辅助工具。因此使用Ibatis比NHibernate要多做一些工作。