Mybatis框架-----核心API
文章目录
- 一🔥、什么是API
- 二🔥、Mybatis中核心API
- 三🔥、核心API的工作流程
- 四🔥、生命周期
-
- 🌙4.1、为什么SqlSessionFactory是单例
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
一🔥、什么是API
API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 [1] 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
二🔥、Mybatis中核心API
序号 | 核心API | 作用 |
---|---|---|
💖1 | SqlSessionFactoryBuilder | 使用构建者模式创建SqlSessionFactory接口 |
💖2 | SqlSessionFactory | 创建SqlSession接口对象(可以认为是一个数据库连接池) |
💖3 | SqlSession | 相当于一个数据连接(Connection对象),可以在一个事务中执行多条SQL,然后通过它的commit、rollbacck方法提交或者回滚事务 |
💖4 | Mapper | 映射器.由Java接口或者XML文件(或者注解构成),需要给出对应的SQL和映射规则,负责发送SQL去执行并返回结果 |
💖5 | … | … |
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
三🔥、核心API的工作流程
如图所示👉👉👉👉👉👉
- 使用构建器来启动Mybatis框架,所有需要使用到SqlSessionFactoryBuilder,SqlSessionFactoryBuilder有需要依赖于mybatis的配制文件,通过对配置文件解析出来的内容去启动mybatis框架
- 然后会返回一个SqlSessionFctory对象,通过SqlSessionFactory对象可以获取到SqlSession
- SqlSession表示的就与数据库的一次连接(相当封装了Connection对象),通过SqlSession对象去获取一个映射器(Mapper)
- Mapper负责把给定的SQL语句向数据库发送
- 数据库处理SQL语句,并返回结果给映射器
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
四🔥、生命周期
SqlSessionFactoryBuilder | 该类用来创建SqlSessionFactory 对象,当 SqlSessionFactory 对象创建以后,SqlSessionFactoryBuilder 就失效,它只存在于创建SqlSessionFactory 的方法中,而不是让其长期存在,因此SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(局部变量) |
---|---|
SqlSessionFactory | 存在于整个mybatis的应用之中,所以一旦创建了SqlSessionFactory ,就要长期保存它,一直到不再使用mybatis应用,因此可以认为SqlSessionFactory 的生命周期就等同于Mybatis的应用周期 |
SqlSession | 存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,让它归还给SqlSession ,否则数据库资源将会很快被消耗光,系统就会瘫痪,所以需要使用try…catch…finally 确保释放资源,因此 sqlSession的最佳的作用域是请求或者方法作用域 |
Mapper | 由于SqlSession 的关闭,它的数据库连接资源也会消失,所以它的生命周期应该小于等于 SqlSession的生命周期 ,Mapper代表的是请求一个业务处理,所以它应该在一个请求中,一旦处理完了相关的业务,就应该废弃它 |
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌙4.1、为什么SqlSessionFactory是单例
由于
sqlSessionFactory
是一个对数据库的连接池,所以它占据数据库的连接资源,如果创建多个sqlSessionFactory
,那么就存在多个数据库连接池,这样不利于对数据库资源的控制,也会导致数据库资源被消耗光,出现系统宕机等情况,所以尽量避免发生这样的情况,因此sqlSessionFactory
是一个单例,让它在应用中被共享
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨