package cn.tt.utils;
import java.sql.Connection;
import java.sql.SQLException;
public class ThredLoaclTransactionUtils {
public static ThreadLocal<Connection> tc = new ThreadLocal<Connection>();
// 获取连接给Dao用;
public static Connection getConnection() {
return tc.get();
}
// 开启事务,连接由service层传递给Dao用;
// 因为service层先调用 ,先开启事务,将连接set到tc中,上面方法的get拿到就是service中放入的connection;
public static void startThreadLocalTransaction() throws Exception {
// 获取连接放入threadLoacl中;
tc.set(JDBCUtils.getConnection());
//
getConnection().setAutoCommit(false);
}
// 提交事务;
public static void commitTransaction() throws SQLException {
getConnection().commit();
}
// 回滚事务
public static void rollbackTransaction() throws SQLException {
getConnection().rollback();
}
}
//调用例
try {
// 开启事务
ThredLoaclTransactionUtils.startThreadLocalTransaction();
// 先查出要删除的用户的信息;
User oldUser = ud.findUserByUserID(userID);
String path = oldUser.getPath();
String realPath = SystemContent.BASEFILEDIR + path;
System.out.println(realPath + "----realPath" + "----path :" + path);
ud.deleteUserByID(userID);// 删除成功后,再删除本地文件;
new File(realPath).delete();
} catch (Exception e) {
e.printStackTrace();
// 出现异常回滚
try {
ThredLoaclTransactionUtils.rollbackTransaction();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} finally {
// 提交事务
try {
ThredLoaclTransactionUtils.commitTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//dao直接threadLocalUtils.getConnection;获取connection;