生命周期和作用域 & mybatis执行流程
流程
sqlSessionFactory 实例化后 --> transactional事务管理-->创建executor执行器-->创建SqlSession-->实现增删改查(失败则回到事务,成功提交事务)
SqlSessionFactoryBuilder(工厂的创造者)
***这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了
***局部方法变量
SqlSessionFactory(工厂)
*******可以想象成数据库连接池**********
***一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例
***使用单例模式或者静态单例模式
SqlSession
**********连接到连接池的一个请求****需要开启和关闭******************
***每个线程都应该有它自己的 SqlSession 实例
***每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它
不同作用域内 同一个静态sqlSessionFactory通过sqlSessionFactory.openSession()方法创建出不同的sqlsession
一个sqlsession可以多次使用它的getMapper方法,获取到多个mapper接口实例
每个mapper都要去做一个业务(执行某一句sql)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?