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 !

相关推荐
4154118 小时前
MyBatis-Plus + PostGIS 实战(四):GeoJSON 序列化与前端地图对接,全局 WKT + 局部 GeoJSON,两种格式优雅共存
java·mybatis·postgis·geojson
Full Stack Developme12 小时前
MyBatis-Plus(MP)AST 抽象语法树 设计原理
java·tomcat·mybatis
han_hanker1 天前
mybatis-plus service层拥有的方法
mybatis
ruleslol2 天前
Mybatis11-不同的数据库连接池的配置
数据库·mybatis
干到60岁退休的码农2 天前
整合Mybatis-Plus分页插件并实现分页api方法
java·mybatis
han_hanker2 天前
mybatis-plus 常用方法
java·tomcat·mybatis
李少兄2 天前
MyBatis、MyBatis-Plus 与全自动 ORM 的本质区别
mybatis
干到60岁退休的码农2 天前
SpringBoot整合Mybatis-plus
spring boot·后端·mybatis
4154112 天前
MyBatis-Plus + PostGIS 实战(二):空间查询与空间索引
java·mybatis·gis·postgis
AgCl232 天前
JavaWeb个人笔记01--Maven到MyBatis
笔记·maven·mybatis