程序员社区

Mybatis框架-----核心API


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的工作流程

如图所示👉👉👉👉👉👉
在这里插入图片描述

  1. 使用构建器来启动Mybatis框架,所有需要使用到SqlSessionFactoryBuilder,SqlSessionFactoryBuilder有需要依赖于mybatis的配制文件,通过对配置文件解析出来的内容去启动mybatis框架
  2. 然后会返回一个SqlSessionFctory对象,通过SqlSessionFactory对象可以获取到SqlSession
  3. SqlSession表示的就与数据库的一次连接(相当封装了Connection对象),通过SqlSession对象去获取一个映射器(Mapper)
  4. Mapper负责把给定的SQL语句向数据库发送
  5. 数据库处理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是一个单例,让它在应用中被共享

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Mybatis框架-----核心API

一个分享Java & Python知识的社区