MyBatis基础之SqlSession

SqlSession 线程安全问题

当你翻看 SqlSession 的源码时,你会发现它只是一个接口。我们通过 MyBatis 操作数据库,实际上就是通过 SqlSession 获取一个 JDBC 链接,然后操作数据库。

SqlSession 接口有 3 个实现类:

# 实现类
1 DefaultSqlSession
2 SqlSessionManager
3 SqlSessionTemplate(在 mybatis-spring 包中)

其中

  • DefaultSqlSession 的注释中很直接地标识:Note that this class is not Thread-Safe.

  • SqlSessionManager 最终用到的也是 SqlSession ,因此它也是 not Thread-Safe

  • SqlSessionTemplate 倒是线程安全的,但是它在 mybatis-spring 包中,是用在 mybatis 和 spring 整合中的,暂时用不上。

因此,SqlSession 不应该是单例的,于此同时,依赖于 session 的 Mapper 要么也应该是多例的,要么就要用上 ThreadLocal !

相关推荐
yvya_2 小时前
Mybatis总结
java·spring·mybatis
计算机学姐15 小时前
基于SpringBoot的社团管理系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·mybatis
没有bug.的程序员19 小时前
MyBatis 初识:框架定位与核心原理——SQL 自由掌控的艺术
java·数据库·sql·mybatis
一叶飘零_sweeeet21 小时前
在分布式环境下正确使用MyBatis二级缓存
java·分布式·mybatis
lssjzmn1 天前
MyBatis Plus 与 MyBatis的PK:Spring Boot 下的详解、选型与实战
spring boot·mybatis
ldj20201 天前
sql xml模板
mybatis
bing_1581 天前
Spring Boot mybatis-plus 多数据源配置
spring boot·后端·mybatis
hqxstudying3 天前
mybatis过渡到mybatis-plus过程中需要注意的地方
java·tomcat·mybatis
ss2733 天前
手写MyBatis第32弹-设计模式实战:Builder模式在MyBatis框架中的精妙应用
设计模式·mybatis·建造者模式
hqxstudying3 天前
MyBatis 和 MyBatis-Plus对比
java·数据库·mysql·mybatis