threadLocalConnection事务管理 connection从service传递工具类

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值