GitHub - houbb/jdbc-pool: The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) (original) (raw)

项目简介

jdbc-pool 是一款简化版的 jdbc-pool 实现。

Maven Central Build Status Open Source Love

拓展阅读

第一节 从零开始手写 mybatis(一)MVP 版本

第二节 从零开始手写 mybatis(二)mybatis interceptor 插件机制详解

第三节 从零开始手写 mybatis(三)jdbc pool 从零实现数据库连接池

第四节 从零开始手写 mybatis(四)- mybatis 事务管理机制详解

创作目的

特性

快速开始

需要

maven 引入

com.github.houbb jdbc-pool 1.7.0

引导类

JdbcPoolBs jdbcPoolBs = JdbcPoolBs.newInstance() .username("root") .password("123456") .url("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");

DataSource pooled = jdbcPoolBs.pooled(); DataSource unPooled = jdbcPoolBs.unPooled();

测试代码

UnPooledDataSource source = new UnPooledDataSource(); source.setDriverClass("com.mysql.jdbc.Driver"); source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8"); source.setUser("root"); source.setPassword("123456");

Connection connection = source.getConnection();

池化的实现

PooledDataSource source = new PooledDataSource(); source.setDriverClass("com.mysql.jdbc.Driver"); source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8"); source.setUser("root"); source.setPassword("123456"); source.setMinSize(1);

// 初始化 source.init();

Connection connection = source.getConnection(); System.out.println(connection.getCatalog());

Connection connection2 = source.getConnection(); System.out.println(connection2.getCatalog());

输出日志

[DEBUG] [2020-07-18 10:50:54.536] [main] [c.g.h.t.p.d.PooledDataSource.getFreeConnection] - 从连接池中获取连接
test
[DEBUG] [2020-07-18 10:50:54.537] [main] [c.g.h.t.p.d.PooledDataSource.getConnection] - 开始扩容连接池大小,step: 1
[DEBUG] [2020-07-18 10:50:54.548] [main] [c.g.h.t.p.d.PooledDataSource.getConnection] - 从扩容后的连接池中获取连接
test

第一次默认直接从线程池中获取,第二次为重新创建的信息。

后期 road-map

中间件等工具开源矩阵

heaven: 收集开发中常用的工具类

rpc: 基于 netty4 实现的远程调用工具

mq: 简易版 mq 实现

ioc: 模拟简易版 spring ioc

mybatis: 简易版 mybatis

cache: 渐进式 redis 缓存

jdbc-pool: 数据库连接池实现

sandglass: 任务调度时间工具框架

sisyphus: 支持注解的重试框架

resubmit: 防止重复提交框架,支持注解

auto-log: 日志自动输出

async: 多线程异步并行框架