##获取同一个连接的使用场景
比如当前需要一个业务 创建订单 需要同时向订单表 订单详情表里插入数据,订单生成成功以后 又需要在购物车中 清除相应的数据 此时如果订单表数据插入成功 但是订单详情表 插入数据失败 此时需要回滚事务
当前事务操作需要用到同一个连接 来保证数据的一致性
示例代码
创建一个JDBC工具类:
创建ThreadLocal对象
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
定义同一线程下获取同一个连接的方法
//获取连接
public static Connection getConnection() {
Connection connection = threadLocal.get();
try {
if(connection == null){
connection = dataSource.getConnection();
//将connection放到threadLocal
threadLocal.set(connection);
}
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
通过此工具类 直接获取的连接 在同一线程为同一个连接