MyBatis 基本构成
核心组件:
- SqlSessionFactoryBuilder: 根据配置(XML配置、Java代码配置)信息生成SqlSessionFactory
- SqlSessionFactory: 用来生成SqlSession
- SqlSession: 会话,是一个既可以发送SQL去执行,并返回结果,也可以获取Mapper的接口
- SQL Mapper:由一个Java接口和XML文件或注解构成的,需要给出对应的SQL和映射规则,负责发送SQL去执行,并返回结果
SqlSessionFactory 可以通过 SqlSessionFactoryBuilder 获得, SqlSessionfactory的任务是创建SqlSession
SqlSession类似于一个JDBC的Connection 对象
构建 SqlSessionFactory 的两种方式:
- XML配置的方式(方便修改)
- 代码方式(硬编码)

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相同

浙公网安备 33010602011771号