Mybatis组件与其生命周期

本文介绍了MyBatis的关键组件及其生命周期,包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession及SqlMapper。阐述了它们的作用及使用场景,强调了SqlSession正确管理和使用的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis组件与其生命周期


Mybatis组件介绍

  1. SqlSessionFactoryBuilder : 构造器,它会根据配置或者代码来生成SqlsessionFactory,采用分布构建Builder模式(建造者模式)。
  2. SqlSessionFactory : 工厂接口,依靠它来生成SqlSession,使用的是工厂模式。
  3. SqlSession : 会话,既可以发送sql语句,也可以获得mapper映射文件的接口。
  4. Sql Mapper : 映射器,由mapper xml文件和一个对应的java 接口 构成,需要给出对应的sql以及映射规则,负责发送sql并去执行,并返回结果。

SqlSessionFactory

SqlSessionFactory的构建需要借助SqlSessionFactoryBuilder分步引导产生,最常使用的方式是由 SqlSessionFactoryBuilder 读取配置文件XML来生成SqlSessionFactory,但是Mybatis也提供了java代码配置方式(代码冗长)。
当提供配置文件后,Mybatis会通过com.apache.ibatis.session.Configuration
类对象构建整个Mybatis上下文。(SqlSessionFactory 是一个接口,存在SqlSessionManager(多线程环境使用)和DefaultSqlSessionFactory(一般情况下使用))
每个Mybatis应用都是基于一个SqlSessionFactory的实例为中心,它的唯一作用就是生产核心接口对象SqlSession。所以它是唯一的应采用单例模式处理。

SqlSession

在Mybatis中,SqlSession是核心接口,它的作用类似于JDBC中的Connection 对象,代表了一个数据库链接资源的启动,它主要负责 获得mapper接口,发送sql到数据库,事务的控制。但是SqlSession像是一个代理对象,其中真正负责工作的是Executor。需要注意的是 SqlSession代表一个数据库连接资源,要及时将它关闭,否则当数据库链接资源耗光时,导致系统瘫痪。

映射器

它是mybatis中最复杂,最重要的组件,它由一个接口和相对应的xml文件(或者注解 直接写在接口的方法上 不推荐)构成。它负责以下四点
1. 描述映射规则
2. 提供sql语句,配置参数类型,返回值类型等
3. 配置缓存
4. 提供动态sql功能
映射器主要作用就是将sql查询到的结果映射到一个POJO,或者将POJO的数据插入到数据库。

生命周期介绍

  1. SqlSessionFactoryBuilder 它的作用在于创建SqlSessionFactory,所以只能存在创建SqlSessionFactory的方法中,不让其长期存在。
  2. SqlSessionFactory 可以看作数据库连接池,占据着数据库的链接资源,mybatis的本质就是对数据库进行操作,所以他应该存在于整个mybatis应用中。
  3. SqlSession 看作是一个数据库连接,只生存于一次业务请求中,当一次请求结束后,应将资源还给SqlSessionFactory,建议用try catch finally 保证它及时关闭。
  4. 映射器 由 SqlSession创建的一个接口,代表一次请求中的业务处理逻辑,所以生命周期应该与SqlSession保持一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值