1 核心组件:
(1)、SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。
(2)、SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。
(3)、SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。
(4)、SQL Mapper(映射器):MyBatis新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。
备注:无论是映射器还是SqlSession都可以发送SQL到数据库执行。
2 SqlSessionFactory 说明
(1) 使用MyBatis首先是使用配置或者代码去生产SqlSessionFactory,而MyBatis提供了构造器SqlSessionFactoryBuilder。它提供了一个类
org.apache.ibatis.Configuration作为引导,采用的是Builder模式。具体的分布在Configuration类里面完成的。
(2) 生成:SqlSessionFactory有两种方式:
1、通过读取配置XML文件的形式生成。
2、通过Java代码的方式生成。
(3)XML构建SqlSessionFactory:在mybatis-config.xml里面配置相关信息(怎么配置这里不再赘述),
然后通过SqlSessionFactoryBuilder的Builder方法创建SqlSessionFactory。
使用代码创建SqlSessionFactory:略(由于不常用,这里直接忽略,想研究的可以查看相关文档)。
(4) SqlSessionFactory是一个接口 它的实现类:
SqlSessionManager:使用多线程的环境中,它的具体实现依靠DefaultSessionFactory。
DefaultSessionFactory:具体都是靠它来实现。
(5) 作用:MyBatis的应用都是以一个SqlSessionFactory的实例为中心的,它的唯一作用是生产MyBatis的核心接口对象SqlSession。使用单例模式来处理它。
3 SqlSession
在MyBatis中,SqlSession是其核心的接口。在MyBatis中有两个实现类,DefaultSqlSession和SqlSessionManager。
DefaultSqlSession是单线程使用的,而SqlSessionManager在多线程环境下使用。
作用:它相当于JDBC中的Connection对象,代表着一个连接资源的启用
(1)获取Mapper接口
(2)发送SQL给数据库
(3)控制数据库事务
4 映射器
映射器是MyBatis中最重要、最复杂的组件,它由一个接口和对应的XML文件(或注解)组成。
它可以配置以下内容:
1、描述映射规则。
2、提供SQL语句,并可以配置SQL参数类型、返回类型、缓存刷新等信息。
3、配置缓存。
4、提供动态SQL。
作用:就是将SQL查询到的结果映射为一个POJO,或者将POJO的数据插入到数据库中,并定义一些关于缓存等重要内容。
备注:MyBatis运用了动态代理的方式使得接口能运行起来。
5 生命周期: