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 !

相关推荐
我命由我1234536 分钟前
Spring Boot - Spring Boot 集成 MyBatis 分页实现 手写 SQL 分页
java·spring boot·后端·sql·spring·java-ee·mybatis
艺杯羹3 小时前
MyBatis 之分页四式传参与聚合、主键操作全解
java·开发语言·maven·mybatis
设计师小聂!3 小时前
尚庭公寓-----day1 业务功能实现
java·ide·spring·maven·mybatis
郑州吴彦祖7724 小时前
Mybatis的SQL编写—XML方式
java·sql·spring·mybatis
Raners_14 小时前
【Java代码审计(2)】MyBatis XML 注入审计
xml·java·安全·网络安全·mybatis
别来无恙14920 小时前
Spring Boot + MyBatis 实现用户登录功能详解(基础)
spring boot·后端·mybatis
经典19921 天前
mybatis详解
数据库·mysql·mybatis
程序猿小D1 天前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+vue实现的酒店预订管理系统,推荐!
数据库·mysql·spring·vue·毕业设计·mybatis·酒店预订
hello 早上好1 天前
MyBatis 核心知识点、插件
java·开发语言·mybatis
float_六七1 天前
MyBatis 在执行 SQL 时找不到名为 name 的参数
java·sql·mybatis