(1.3)、MyBatis的基本要素——核心对象

MyBatis三个基本要素:

1. 核心接口和类。

2. MyBatis核心配置文件(MyBatis-config.xml)。

3. SQL映射文件(mapper.xml)。

MyBatis核心接口和类:

1. 每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。

2. 首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建该对象。

3. 然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获取。

4. 有了SqlSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSsession对象中完全包含以数据库为背景的所有执行SQL操作的方法,可以用该实例来直接执行已映射的SQL语句。

SqlSessionFactoryBuilder的作用:SqlSessionFactoryBuilder负责构建SqlSessionFactory,并且提供了多个build()方法的重载。

SqlSessionFactoryBuilder的生命周期和作用域:SqlSessionFactoryBuilder的最大特点是:用过即丢。一旦创建了SqlSessionFactory对象之后,这个类就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范围就是存在与方法体内,也就是局部变量而已。

SqlSessionFactory的作用:SqlSessionFactory简单的理解就是创建SqlSession实例的工厂。所有的MyBatis应用都是以SqlSessionFactory实例为中心,SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获得。有了它之后,顾名思义,就可以通过SqlSessionFactory提供的openSession()方法来获取SqlSession实例。

SqlSessionFactory的生命周期和作用域:SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在。没有理由去销毁或在创建它,并且应用运行中也不建议多次创建SqlSessionFactory。因此SqlSessionFactory的最佳作用域是Application,即随着应用的生命周期一同存在。那么这种"存在于整个应用运行期间,并且同时只存在一个对象实例"的模式就是所谓的单例模式(指在运行期间有且仅有一个实例)。

SqlSession的作用:SqlSession适用于持久化操作的对象,类似于JDBC的Connention。它提供了面向数据库执行SQL命令所需的所有方法,可以通过SqlSession实例直接运行已映射的SQL语句。

SqlSession的生命周期和作用域:SqlSession对应着一次数据库会话。由于数据库会话不是永久的,因此SqlSession的生命周期也不应该是永久的。相反,在每次访问数据库时都需要创建它(注意:并不是说在SqlSession里只能执行一次SQL,是完全可以执行多次的,但是若关闭SqlSession,那么就需要重新创建它)。创建SqlSession的地方只有一个,那就是SqlSessionFactory对象的openSession()方法。

注意:每一个线程都有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。

关闭SqlSession是非常重要的。必须确保SqlSession在finally语句块中正常关闭。

SqlSession的两种使用方式:

1. 通过SqlSession实例来直接执行已映射的SQL语句。

2. 基于mapper接口方式操作数据。

第一种方式是旧版本的MyBatis提供的操作方式,虽然现在也可以正常工作但是第二种方式是MyBatis官方推荐使用的,其表达方式也更加直白,代码更加清晰,类型安全,也不用担心易错的字符串字面值以及强制类型转换。

 

 

猜你喜欢

转载自blog.csdn.net/qq_42726314/article/details/82501598