MyBatis 基本构成


核心组件:

  • SqlSessionFactoryBuilder: 根据配置(XML配置、Java代码配置)信息生成SqlSessionFactory
  • SqlSessionFactory: 用来生成SqlSession
  • SqlSession: 会话,是一个既可以发送SQL去执行,并返回结果,也可以获取Mapper的接口
  • SQL Mapper:由一个Java接口和XML文件或注解构成的,需要给出对应的SQL和映射规则,负责发送SQL去执行,并返回结果

SqlSessionFactory 可以通过 SqlSessionFactoryBuilder 获得, SqlSessionfactory的任务是创建SqlSession
SqlSession类似于一个JDBC的Connection 对象

构建 SqlSessionFactory 的两种方式:

  1. XML配置的方式(方便修改)
  2. 代码方式(硬编码)

 

 

org.apache.ibatis.session.Configuration: 实例保存着用户自定义配置信息,这个类的实例存在于整个MyBatis应用的生命周期中, 以便重复读取和使用

SqlSessionManager: 目前没有使用,MyBatis 目前使用的是 DefaultSqlSessionFactory

 

映射器

由Java接口和XML文件(或注解)共同组成, 定义参数类型,描述缓存、SQL语句,定义查询结果和POJO的映射关系

XML配置方式

注解方式(功能受限,不灵活,可读性差)

 

在MyBatis中保留着 iBatis,通过“命名空间(namespace)+SQL id”的方式发送SQL并返回数据的形式

 

 

生命周期

SqlSessionFactoryBuilder

利用XML或Java编码获得资源来构建多个SqlSessionFactory

SqlSessionFactory一旦构建完成,SqlSessionFactoryBuilder就失去了存在的意义

存在于方法的局部

 

SqlSessionFactory

用于创建SqlSession,SqlSession就是一个会话,相当于JDBC中的Connection对象

程序需要访问数据库,我们就要通过SqlSessionFactory创建SqlSession

SqlSessionFactory在Mybatis应用的整个生命周期中

创建SqlSessionFactory会打开更多的数据库链接,

SqlSessionFactory 指责唯一,单用单例模式便于管理

每一个数据库只对应一个SqlSessionFactory,避免过多的Connection被消耗

 

SqlSession

相当于JDBC的一个Connection对象

生命周期应该是在请求数据库处理事务的过程中,是线程不安全对象

操作数据库需要注意其隔离级别,数据库锁等高级特性

可以执行多条SQL,保证事务的唯一性

 

Mapper

是一个没有任何实现类的接口,作用是发送SQL

生命周期与SqlSession相同

 

 

 

 

 



posted @ 2020-11-11 15:21  半雨微凉  阅读(124)  评论(0)    收藏  举报