在写之前先提醒一下,大部分代码还是沿用上一篇的,在其基础上更改。若没有案例代码的,可以去我文章的上一篇中查找。但是我在此需要对代码进行一部分的修改:①获取连接的方式②新增事务类
连接工具类ConnectionUitls
package com.utils;
import javax.sql.DataSource;
import java.sql.Connection;
public class ConnectionUtils {
private ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public Connection getThreadConnection(){
Connection connection = threadLocal.get();
try{
if(connection == null) {
connection = dataSource.getConnection();
threadLocal.set(connection);
}
return connection;
}catch (Exception e){
throw new RuntimeException(e);
}
}
public void removeConnection(){
threadLocal.remove();
}
}
事务类TransactionManager
package com.itheima.utils;
public class TransactionManager {
private ConnectionUtils connectionUtils;
public void setConnectionUtils(ConnectionUtils connectionUtils) {
this.connectionUtils = connectionUtils;
}
public void beginTransaction(){
try {
connectionUtils.getThreadConnection().setAutoCommit(false);
}catch (Exception e){
e.printStackTrace();
}
}
public void commitTransaction(){
try{
connectionUtils.getThreadConnection().commit();
}catch (Exception e){
e.printStackTrace();
}
}