1. 什么是Mybatis
Mybatis 本是Apache 的一个开源项目IBatis,2010年这个项目由 Apache software foundation 迁移到 Google code ,并且改名Mybatis,同时也对其进行了改进。
Mybatis 是一个支持定制化 SQL、存储过程以及高级映射的优秀持久层框架,Mybatis 几乎避免了所有的JDBC 代码和手工设置参数以及抽取结果集。Mybatis使用
简单的xml 文件或者注解来配置和映射基本体将接口和java的POJOs( Plain old java Objects,即普通的java对象),映射成数据库的记录。
Mybatis 的框架架构:
原理解析:
Mybatis应用程序根据xml 配置文件创建 SqlSessionFactoryBuilder ,SqlSessionFactoryBuilder 在通过build(Read reda) 获取SqlSessionFactory,SqlSessionFactory
再根据配置获取SqlSession 对象,配置的来源有两个地方:配置文件和java代码注解, SqlSession包含了执行sql 所需要的所有方法,通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。
Mybatis的优点:
1.简单易学:
Mybatis 本身就很小而且简单,没有第三方依赖(可以单独使用,当然更多的是配合Spring 框架使用),最简单的安装只需要3 个jar 包(mybatis、 ojdbc 、commons-dbcp,可以从网上下载)和几个配置文件(自己配置)就可以使用。
2.灵活:
mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
3.接除sql与程序代码的耦合:
通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
4、提供映射标签,支持对象与数据库的orm字段关系映射
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态sql。
Mybatis的缺点:
1、编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
2、SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
4、二级缓存机制不佳