使用的数据库线程池工具 c3p0-0.9.1.2.jar 、 mchange-commons-java-0.2.10.jar
作用:用一个线程绑定connection对象, 每次取connection的时候保证拿到的始终是同一个对象
代码实现:
package cn.jishupeng.boookstroe.utils;
import cn.jishupeng.bookstore.utils.C3P0Util;
import java.sql.Connection;
import java.sql.SQLException;
public class ManageThreadLocal {
private static ThreadLocal<Connection> tl = new ThreadLocal<>();
public static Connection getConnection() {
Connection conn = tl.get();
try {
if (conn == null) {
conn = C3P0Util.getConnection();
tl.set(conn);
System.out.println("第一次从ThreadLocal获取Connection对象:" + conn);
} else {
System.out.println("第n次从ThreadLocal中获取Connection对象");
}
return conn;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void startTransaction() {
try {
ManageThreadLocal.getConnection().setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void rollbackTransaction() {
try {
ManageThreadLocal.getConnection().rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void commitTransaction(){
try {
ManageThreadLocal.getConnection().commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close() {
try {
ManageThreadLocal.getConnection().close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}