Java课题笔记~ MyBatis的工作流程和核心对象

一、工作流程

MyBatis的工作流程是MyBatis中重要的知识点,整个MyBatis工作流程分为5个步骤。

Java课题笔记~ MyBatis的工作流程和核心对象_第1张图片

 

  1. 编写配置文件与映射文件:配置文件设置数据库连接;映射文件设置与SQL文件相关的操作。

  2. MyBatis通过配置文件和映射文件生成SqlSessionFactory对象:此对象在MyBatis整个生命周期中只存在一份,它负责为每一个连接生成SqlSession对象。

  3. 通过SqlSessionFactory对象生成SqlSession对象:SqlSession对象在每次连接中只有一个,它封装了操作数据库的所有方法。

  4. 在每一次连接中,通过SqlSession对象操作数据库,SqlSession通过底层的Executor执行器执行对应操作。Executor执行器分为两种:一种是普通执行器;另一种是缓存执行器。

  5. Executor执行器将此次操作封装为MappedStatement对象,在执行SQL语句之前,Executor执行器通过MappedStatement对象将输入的实体对象或基本类型数据映射到SQL语句,在执行SQL语句之后,Executor执行器通过MappedStatement对象将SQL语句执行的结果映射为实体对象或基本类型数据。

二、核心对象

(1)SqlSessionFactory

SqlSessionFactory是MyBatis中的核心类,它采用工厂设计模式构建,负责创建SqlSession对象。构建SqlSessionFactory对象需要使用SqlSessionFactoryBuilder类

调用SqlSessionFactoryBuilder类中的builder()方法即可创建SqlSessionFactory对象

build()方法有多种重载,参数可以选填Reader和InputStream的实现类

Java课题笔记~ MyBatis的工作流程和核心对象_第2张图片

 

1、构建SqlSessionFactory对象

build方法的参数中需要MyBatis配置文件的输入流,接下来创建输入流。

调用Resource类的getResourceAsStream()方法,传入配置文件的绝对路径

InputStream inputStream = Resources.getResourceAsStream("文件路径");

获得配置文件流之后,将其作为参数传入SqlSessionFactoryBuilder的build()方法中

调用build()方法,返回值就是SqlSessionFactory对象

SqlSessionFactoryBuilder builder = SqlSessionFactoryBuilder.builder(inputStream );

2、使用SqlSessionFactory对象

在SqlSessionFactory类中存在openSession()方法与getConfiguration()方法

openSession()方法可以创建SqlSession对象,也可以在该方法中传入参数来设置创建的SqlSession对象,getConfiguration()方法用于获取SqlSessionFactory的配置。

Java课题笔记~ MyBatis的工作流程和核心对象_第3张图片

 

3、产生SqlSession对象

SqlSessionFactory类的主要作用是生产SqlSession对象

调用SqlSessionFactory对象的openSession()方法就可以产生SqlSession对象

 通过SqlSessionFactory对象生成的SqlSession对象,在每次连接中只有一个,它负责通过各种方法操作数据库。

SqlSession sqlSession= SqlSessionFactory.openSession();

4、使用SqlSession对象

SqlSession对象是MyBatis中的核心类对象。在日常开发中,常用SqlSession对象与数据库进行交互。

SqlSession对象贯穿于整个数据库访问的过程,一定时间段内没有使用SqlSession对象时,需要及时调用SqlSession对象的close()方法,将其关闭。

SqlSession对象提供了执行SQL,提交事务或回滚事务,使用映射器等方法,在方法中需要指定映射文件中的方法。

Java课题笔记~ MyBatis的工作流程和核心对象_第4张图片

Java课题笔记~ MyBatis的工作流程和核心对象_第5张图片 

三、配置日志

1、导入log4j的依赖


    log4j
    log4j
    1.2.12

2、在应用的类路径中创建一个名为 log4j.properties 的文件,文件的具体内容如下:

# 全局日志配置
log4j.rootLogger=ERROR, stdout
# MyBatis 日志配置
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

上述配置将使 Log4J 详细打印 org.mybatis.example.BlogMapper 的日志,对于应用的其它部分,只打印错误信息。

为了实现更细粒度的日志输出,你也可以只打印特定语句的日志。以下配置将只打印语句 selectBlog 的日志:

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

或者,你也可以打印一组映射器的日志,只需要打开映射器所在的包的日志功能即可:

log4j.logger.org.mybatis.example=TRACE

某些查询可能会返回庞大的结果集。这时,你可能只想查看 SQL 语句,而忽略返回的结果集。为此,SQL 语句将会在 DEBUG 日志级别下记录(JDK 日志则为 FINE)。返回的结果集则会在 TRACE 日志级别下记录(JDK 日志则为 FINER)。因此,只要将日志级别调整为 DEBUG 即可:

log4j.logger.org.mybatis.example=DEBUG

你可能感兴趣的:(Java,mybatis,java,笔记)