Mybatis的基本构成

基本构成

SqlSessionFactoryBuilder(构造器)

​ 根据配置信息来生成SqlSessionFacory(工厂接口)

SqlSessionFactory

​ 是一个接口工厂接口而不是实现类,可以通过SqlSessonFactoryBuilder获得。它的任务是创建SqlSession(会话),可以说是每个Mybatis的应用的核心。

​ 可以通过XML配置方式或者编码方式来创建SqlSessionFactory,强烈建议使用XML配置文件的方式。

​ 通过解析XML配置信息到org.apache.ibatis.session.Confuguration中,这个Configuration类对象将会存在整个Mybatis的生命周期中,另外,Mybatis提供了两个SqlSessionFactory的实现类,一个是DefaultSqlSessionFactory和SqlSessionManger,不过,SqlSessionManger目前还没有使用,Mybatis目前使用的是DefaultSqlSessionFactory

SqlSession

​ 一个既可以发送Sql去执行并返回结果,也可以获取Mapper的接口

​ 是一个接口类,扮演着门面的作用,也就是说,我们只要告诉它我们要什么信息(参数),要做什么(SQL),那么它在一段时间之后就会将结果返回给我们,在这个过程中,我们也只需要关心我们需要什么样的参数和功能,之后会返回什么样的结果给我们就可以了。而中间的处理过程对我们来说是透明的,中间的黑盒操作主要是依靠Executor来实现的。

​ SQLSession有两个实现类:DefaultSqlSession、SQLSessionManger,每次在使用完SQLSession之后需要正确的进行关闭动作,将连接资源交还给数据库,以免导致资源的匮乏而导致其他问题。

​ 用途:

1. 获取映射器,让映射器通过命名空间和方法名找到对应的SQL,发送给数据库执行后返回结果
 2. 在SqlSession层,可以通过update、insert、delete、select等方法,带上SQL的ID来操作在XML中配置好的SQL,从而完成我们的工作

SQL Mapper

​ 由一个接口和XML文件(或注解)组成,需要给出SQL和对应的映射规则,负责发送SQL去执行,并返回结果

​ 作用:

1. 定义参数类型
 2. 描述缓存
 3. 描述SQL语句
 4. 定义SQL返回结果和POJO的映射关系

生命周期

SqlSessionFactoryBuilder

​ 它可以通过XML文件或者java编码来构造SQLSessionFactory,可以构造多个SessionFactory,我们在构造完SqlSessionFactory之后,Builder也就完成了它的使命,我们就可以对其进行回收了,所以它的生命周期只需要在方法局部内就可以了。

SQLSessionFactory

​ 每次程序需要访问数据库的时候,SqlSessionFactory就会创建出SqlSession会话,所以,SqlSessionFactory应该要贯穿于Mybatis的整个生命周期,但是,如果程序中多次创建同一个数据库的SqlSessionFactory,那么每次创建SqlSessionFactory就会打开更多的数据库连接资源,那么数据库连接资源就会很快的被耗尽。所以SqlSessionFactory果断需要配置成单例的,在整个Mybatis的生命周期中,只需要存在同一个数据库的一个SqlSessionFactory实例来管理好数据库的连接就可以了。

SqlSession

​ 是一个会话,相当于JDBC的一个Connection对象,它的生命周期是在请求数据库处理事务的过程中,是一个线程不安全的对象。

Mapper

​ 应该在一个SqlSession事务方法之内,是一个方法级别的东西。最大的范围是和SqlSession范围相同的。尽量在一个SqlSession中使用它