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 !

相关推荐
zzb158021 小时前
RAG from Scratch-优化-query
java·数据库·人工智能·后端·spring·mybatis
zzb15801 天前
RAG from Scratch-优化-routing
java·前端·网络·人工智能·后端·python·mybatis
MegaDataFlowers1 天前
使用注解开发
mybatis
常利兵1 天前
Spring Boot + MyBatis,给数据穿上“隐形盔甲”
java·spring boot·mybatis
Java程序之猿2 天前
SpringBoot + camel+IBM MQ实现消息队列处理
java·spring boot·mybatis
罗小爬EX2 天前
MyBatis Interceptor执行顺序详解(plugin机制、责任链模式)
mybatis·interceptor
weixin_704266052 天前
Spring整合MyBatis(一)
java·spring·mybatis
寻见9032 天前
10 分钟吃透 MyBatis 核心|从底层原理到实战技巧,Java 开发者必藏(无废话干货)
java·mysql·mybatis
TTc_2 天前
对于子查询语句多条sql报错排查
数据库·sql·mybatis
小涛不学习2 天前
MyBatis-Plus 完整教程(入门到实战)
mybatis