Mybatis框架-----核心API

Mybatis框架-----核心API

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

一🔥、什么是API

API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 [1] 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

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

二🔥、Mybatis中核心API

序号核心API作用
💖1SqlSessionFactoryBuilder使用构建者模式创建SqlSessionFactory接口
💖2SqlSessionFactory创建SqlSession接口对象(可以认为是一个数据库连接池)
💖3SqlSession相当于一个数据连接(Connection对象),可以在一个事务中执行多条SQL,然后通过它的commit、rollbacck方法提交或者回滚事务
💖4Mapper映射器.由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是一个单例,让它在应用中被共享

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱爱代码

互相学习,互相进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值