MyBatis_MyBatis主要类的介绍
主要内容
复制1、Resource
2、SqlSessionFactoryBuilder
3、SqlSessionFactory
4、SqlSession
1. Resource
resource是 mybatis中的一个类,主要负责读取主配置文件的内容
// 1、格式 使用方法: getResourcesAsStream(String resource)
InputStream in = Resources.getResourceAsStream("mybatis配置文件");
// 2、实例
InputStream in = Resources.getResourceAsStream("mybatis.xml");
2. SqlSessionFactoryBuilder
SqlSessionFactoryBuilder用于创建SqlSessionFactory对象
// 1、格式
// 创建SqlSessionFactoryBuilder类的对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 通过mybatis主配置文件流对象 获取 SqlSessionFactory类的对象
SqlSessionFactory factory = builder.build(mybatis主配置文件流对象);
// 2、实例
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
3. SqlSessionFactory
SqlSessionFactory是重量级对象也是最关键的对象,使用此对象创建实体类对象的时间较长,使用的资源也比较多,一般在整个项目中只需要一个。
SqlSessionFactory本质是一个接口,通过其实现类DefaultSqlSessionFactory
可以获取SqlSession
对象,程序代码的表示
SqlSession sqlSession = factory.openSession();
openSession()方法说明
1)、openSession()是无参数的,获取的是非自动提交事务的SqlSession对象
2)、使用openSession(boolean),当boolean为true
,表示获取的是自动提交事务的SqlSession对象,如果boolean为false
,则表示获取的是非自定提交事务的SqlSession对象。
4. SqlSession
SqlSession也是一个接口,定义了操作数据的方法,如selectOne(),selectList(),insert(),update(),delete(),commit(),rollback()等。其实现类DefaultSqlSession
用于实现这些方法。
1、为什么要使用 SqlSession.close() 关闭SqlSession
使用SqlSession的要求: SqlSession对象不是线程安全的,需要在方法内部使用。在执行sql语句之前,需要通过openSession()
方法来获取SqlSession对象。在执行sql语句之后,要执行SqlSession.close()
关闭。这样就能保证其使用是线程安全的。
代码表示
// 1、使用SqlSession
SqlSession sqlSession = factory.openSession();
//... sqlSession执行sql语句操作
// 2、关闭SqlSession
sqlSession.close();
2、SqlSession和其他类的之间的关系(图)
前面的类或接口主要目的是为了创建SqlSession
,SqlSession才是程序的关键,是执行sql语句的对象
来源: 博客园
作者: 茶哩哩
文章: 转载请注明原文链接:https://www.cnblogs.com/martin-1/p/15581468.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现