MyBatis简介
(1)MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
(2)MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
(3)Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后mybatis框架执行sql并将结果映射成java对象并返回。
总之,Mybatis对JDBC访问数据库的过程进行了封装,简化了JDBC代码,解决JDBC将结果集封装为Java对象的麻烦。
MyBatis的架构图解
(1)mybatis-config.xml是Mybatis的核心配置文件,通过其中的配置可以生成SqlSessionFactory,也就是SqlSession工厂。
(2)基于SqlSessionFactory可以生成SqlSession对象。
(3)SqlSession是一个可以发送SQL去执行,并返回结果的对象,类似于JDBC中的Connection对象,也是Mybatis中至关重要的一个对象。
(4)Executor是SqlSession底层的对象,用于执行SQL语句。
(5)MapperStatement对象也是SqlSession底层的对象,用于接收输入映射(SQL语句中的参数),以及做出输出映射(即将SQL查询的结果映射成相应的结果)。
为什么要使用MyBatis
因为使用传统方式JDBC访问数据库存在很多缺点,如:代码繁琐,有太多重复代码,需要操作太多对象,释放资源,对结果的处理太麻烦等。在Mybatis框架中这些问题几乎都得到了解决!!
MyBatis的基本工作流程
(1)读取配置文件,配置文件包含数据库连接信息Mapper映射文件或者Mapper包路径.
(2)有了这些信息就可以创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行时建立,程序结束时消亡。
(3)SqlSessionFactory建立SqlSession,目的是执行SQL语句,SqlSession是过程级,在一个方法中建立,方法结束时应该关闭。
(4)当用户使用mapper.xml文件中配置的方法时,MyBatis首先会解析SQL动态标签为对应数据库SQL语句的形式,并将其封装进MapperStatement对象,然后通过Executor将SQL注入数据库执行,并返回结果。
(5)将返回的结果通过映射,包装成java对象。
MyBatis的编程步骤
(1)创建SqlSessionFactory;
(2)通过SqlSessionFactory创建SqlSession对象;
(3)通过SqlSession执行数据库操作;
(4)通过session.commit()提交事务;
(5)使用session.close()关闭事务。
小结
MyBatis框架易于上手和掌握,SQL直接写在xml里面,便于统一管理和优化,减少了SQL与程序代码间的耦合,同时也提供了xml标签,支持动态的SQL编写。