java手写jdbc连接池 青旅半醒 2021-09-29 14:46 361阅读 0赞 废话不多说,直接上代码。 public class ConnectionUtil { private static final Logger logger = LoggerFactory.getLogger(ConnectionUtil.class); private static final List<Connection> pool = new ArrayList<>(); private static final int POOL_COUNT = 5; private static String url = null; private static String userName = null ; private static String passWord = null ; private ConnectionUtil(){} /** * 初始化连接数大小 */ static{ try { url = "连接串"; userName = "用户名"; passWord = "密码"; Class.forName("net.sf.log4jdbc.DriverSpy"); Connection conn = null; for (int i = 0; i < POOL_COUNT; i++) { conn = DriverManager.getConnection(url,userName ,passWord); pool.add(conn); } } catch (Exception e) { logger.error("初始化连接失败",e); } } /** * 添加一个连接到池子中,应该考虑最大上限 * @param conn */ private static void add(Connection conn){ if(conn != null){ pool.add(conn); } } /** * 移除一个连接 * @param conn */ private static void remove(Connection conn){ pool.remove(conn); } /** * 获取一个连接,当连接池中的不够用时,新建一个 */ public static Connection get() throws ClassNotFoundException, SQLException{ Connection conn = null; if(!pool.isEmpty()){ conn = pool.get(0); remove(conn); }else{ conn = getConnection(); add(conn); } return conn; } /** * 使用完毕之后,再放回池子中 * @return */ public static void backConn(Connection conn){ add(conn); } /** * 新建一个连接 * @return */ private static Connection getConnection() throws ClassNotFoundException, SQLException{ Class.forName("net.sf.log4jdbc.DriverSpy"); return DriverManager.getConnection(url,userName ,passWord); }
还没有评论,来说两句吧...