JDBCUtil工具类回顾

来源:互联网 发布:扭矩补偿算法 编辑:程序博客网 时间:2024/06/05 11:06
package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import exception.DataAccessException;public class JdbcUtil {private static Properties config;private static ThreadLocal<Connection> threadLocal;static{try {threadLocal=new ThreadLocal<Connection>();config=new Properties();config.load(JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));Class.forName(config.getProperty("driver"));} catch (Exception e) {e.printStackTrace();throw new ExceptionInInitializerError("JdbcUtil初始化错误");} }//保证一个事务一个连接,一个事务一个业务,一个事务一次操作,一个线程一个事务//每个线程获得一个连接public static Connection getConnection(){Connection con=threadLocal.get();if(con==null){try {con=DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password"));threadLocal.set(con);} catch (Exception e) {e.printStackTrace();throw new DataAccessException("数据访问失败",e);}}return con;}public static void close(Connection con,PreparedStatement ps,ResultSet rs){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}}//关闭跟本线程相关的连接public static void close(){Connection con=threadLocal.get();if(con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}threadLocal.remove();}}}

0 0
原创粉丝点击