配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <c3p0-config> 3 <default-config> 4 <property name="user">root</property> 5 <property name="password">root</property> 6 <property name="driverClass">com.mysql.jdbc.Driver</property> 7 <property name="jdbcUrl">jdbc:mysql:///day35</property> 8 </default-config> 9 </c3p0-config>
Java
1 package utils; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 8 import javax.sql.DataSource; 9 10 import com.mchange.v2.c3p0.ComboPooledDataSource; 11 12 public class DataSourceUtils { 13 14 private static DataSource dataSource = new ComboPooledDataSource(); 15 16 private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>(); 17 18 // 直接可以获取一个连接池 19 public static DataSource getDataSource() { 20 return dataSource; 21 } 22 23 public static Connection getConnection() throws SQLException { 24 return dataSource.getConnection(); 25 } 26 27 // 获取连接对象 28 public static Connection getCurrentConnection() throws SQLException { 29 30 Connection con = tl.get(); 31 if (con == null) { 32 con = dataSource.getConnection(); 33 tl.set(con); 34 } 35 return con; 36 } 37 38 // 开启事务 39 public static void startTransaction() throws SQLException { 40 Connection con = getCurrentConnection(); 41 if (con != null) { 42 con.setAutoCommit(false); 43 } 44 } 45 46 // 事务回滚 47 public static void rollback() throws SQLException { 48 Connection con = getCurrentConnection(); 49 if (con != null) { 50 con.rollback(); 51 } 52 } 53 54 // 提交并且 关闭资源及从ThreadLocall中释放 55 public static void commitAndRelease() throws SQLException { 56 Connection con = getCurrentConnection(); 57 if (con != null) { 58 con.commit(); // 事务提交 59 con.close();// 关闭资源 60 tl.remove();// 从线程绑定中移除 61 } 62 } 63 64 // 关闭资源方法 65 public static void closeConnection() throws SQLException { 66 Connection con = getCurrentConnection(); 67 if (con != null) { 68 con.close(); 69 } 70 } 71 72 public static void closeStatement(Statement st) throws SQLException { 73 if (st != null) { 74 st.close(); 75 } 76 } 77 78 public static void closeResultSet(ResultSet rs) throws SQLException { 79 if (rs != null) { 80 rs.close(); 81 } 82 } 83 84 }