1,Mybatis的核心组件
(1)sqlsessionFactoryBuilder
这个是构造器用于生产sqlsessionFactory工厂的。它一般通过配置文件生成sqlsessionFactory工厂的。他会受到session.Configuration类对象的引导,采用Builder设计模式然后利用分步的形式去生成会话工厂。当然详细的步骤是在configuration中的实现以及特别实现的。
(2)sqlsessionFactory会话工厂
它主要的作用就是用来生成sqlsession会话。,它采用的设计模式就是工厂模式。
(3)sqlsession :sql会话
主要作用就是给发送sql执行以及返回执行的结果,还有就是它可以获取Mapper接口。但是在最新的Mybatis规范中我们已经使用“sqlsession消失”的方式,具体其实就是使用动态代理的方式实现事务,从而隐藏sqlsession的功能工厂过程。最新的Mybatis规范中采用SQL Mapper组合接口编程技术。它可以提高代码的可读性以及可维护性。
(4)SQL Mapper映射器:
Mybatis新设计存在的组件,他有一个SQL以及一个Java接口构成,需要给出对应的SQL以及映射规则,它代替sqlsession去发送SQL执行并且返回长执行结果。
(5)生成sqlsessionFactory的过程:
首先会有一个配置文件,然后Mybatis就会去读取这个配置文件,通过configuration类对象构建整个Mybatis上下文,其中sqlsessionFactory是一个接口,在Mybatis中他有两个实现类sqlsessionManager和defaultsqlsessionFactory这两个实现类。其中默认的也就是一般情况下使用的就是defaultsqlsessionFactory,而sqlsessionMananger就是用于多线程以及并发环境下的,它也是依靠defaultsqlsessionFactory去实现的。
1,创建配置文件xml。然后采用读取文件流的形式
2,调用new sqlsessionFactoryBuilder.builder(具体文件生成的文件流);这样就可以生成一个sqlsessionFactory工厂。
注意:由于Mybatis的应用都是以一个sqlsessionFactory为中心的,它的唯一作用就是用来生成sqlsession的,因此它在生产开发过程中的我们都是采用单例模式去处理的。
特别推荐使用xml的配置形式去生成sqlsessionFactory工厂,可以有利于后续的修改以及维护。
(6)sqlsession详细说明
在Mybatis之中sqlsession就是一个类似于JDBC的连接器connection的对象。它的功能主要是:获取Mapper接口,发送SQL语句给数据库,控制数据库事务的实现。
其实在sqlsession里面核心的接口是Eexcutor。我们如果查看sqlsession的源码就可以看见12。sqlsession实现事务操作主要就是实现两个方法一个是提交操作Commit,一个就是回滚操作Rollback。这个数据库事务在spring中应用广泛但是目前最新的spring版本已经使用动态代理综合注解的方式将sqlsession的接口隐藏了。关于数据库的连接以及释放,事务提交以及回滚全都交给@Transactional这个注解去实现。
(7)映射器
映射器一般有以下几部分组成:
映射规则,SQL语句(参数类型+返回类型+语句缓存),配置缓存(mapper级别以及sqlsession级别),还可以提供动态SQL的编写。
映射器的作用就是将SQL语句的执行结果映射成为POJO的类格式。
映射器的配置一般就是通过xml文件的格式去实现。