mybatis ----SqlSessionManager

今天我们来看看这个类 有些写法还是很经典的

public class SqlSessionManager implements SqlSessionFactory, SqlSession {

private final SqlSessionFactory sqlSessionFactory;
private final SqlSession sqlSessionProxy;

private final ThreadLocal<SqlSession> localSqlSession = new ThreadLocal<>();

private SqlSessionManager(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
this.sqlSessionProxy = (SqlSession) Proxy.newProxyInstance(
SqlSessionFactory.class.getClassLoader(),
new Class[]{SqlSession.class},
new SqlSessionInterceptor());
}

讲两点

1直接能看到 的threadLoacal<Sqlsession> ,说明<SqlSession> 是跟线程绑定的,每个线程里会自己的SqlSesion副本

2Proxy 代理SqlSession 接口,SqlSessionProxy,代理的写法和使用。




原文地址:https://www.cnblogs.com/anyehome/p/9994523.html