# BoomDataSource
**Repository Path**: NiceSoneC/BoomDataSource
## Basic Information
- **Project Name**: BoomDataSource
- **Description**: 数据库连接执行池
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-05-08
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MDBPoolExcutor
## 简介
MDBPoolExcutor 是基于 Java 语言的 一种数据库执行池。我们知道,数据库连接是一个非常昂贵的资源,申请一个链接开销比较大,所以需要一个"池"来进行统一管理,从而实现数据库链接的重复利用,节约资源。同时一个新的数据库操作要执行时,相应速度也会更快。
#### 框架特点
1. 处了提供数据库连接管理功能,还提供直接执行的功能。
2. 获取任务结果的方式有三种
* 使用`Future设计模式`,异步执行任务,返回Future
* `阻塞方式`,使用Future的get方法,阻塞到有结果
* `回调方式`,自定义回调执行函数,当获取到结果时调用
3. 容易上手使用
## 使用流程
### 导入依赖
``` java
org.mao
dbpool
1.0.0
```
### 基本使用步骤
#### 1.创建DBPoolExecutor
##### 参数说明
名称|类型|描述|必选
---|---|---|---
JDBC_DRIVER|String|使用的数据库连接引擎|√
DB_URL|String|数据库连接串|√
USER_NAME|String|数据库用户名|√
PASSWORD|String|数据库密码|√
PASSWORD|String|数据库密码|√
coreCount|int|核心数据库连接个数|×
maxCount|int|最大数据库连接个数|×
``` java
// 先得到一个DBPoolExecutor构造器,配置好参数
DBPoolExecutorBuilder builder = DBPoolExecutor.getBuilder(JDBC_DRIVER, DB_URL, USER_NAME, PASSWORD);
// 构建一个DBPoolExecutor
DBPoolExecutor executor = builder.build();
```
#### 2.使用DBPoolExecutor
##### 查询
``` java
/*
* 基本的异步查询
* @param sql 查询语句
* @return DBFuture> 结果Future包装实例
*/
public DBFuture> query(String sql);
/*
* 异步查询结果,注册一个回调函数,当查询完成时,触发回调函数
* @param sql 查询语句
* @return DBFuture> 结果Future包装实例
*/
public DBFuture> query(String sql,DBCallback> callback);
```
##### 更新
``` java
/*
* 基本的异步更新
* @param sql 更新语句,insert或update
* @return DBFuture 结果Future包装实例,结果为影响的行数
*/
public DBFuture update(String sql);
/*
* 带回调函数的异步更新,当更新后,触发回调函数
* @param sql 更新语句,insert或update
* @return DBFuture 结果Future包装实例,结果为影响的行数
*/
public DBFuture update(String sql,DBCallback callback);
```
### 拓展功能
#### Record
一个Record实例代表数据库表中的一条记录。可以方便的获取每个字段的值,不需要添加额外的getter/setter方法
##### 常用方法
``` java
// 获取所有字段的集合
public Set colunmSet();
// 获取一个字段的值
public Object get(String key);
// 设置一个字段的值,可以链式的设置
public Record put(String key,Object val);
// 移除一个字段
public Record remove(String key);
// 返回一个Map副本,里面包含所有的字段+值
public Map getMap();
```
#### DBUtil
DBUtil是DBPoolExecutor的加强类,除了有DBPoolExecutor的全部功能以外,还有自己的许多方便功能
常和Record联合使用
##### 常用方法
``` java
// 在数据库表中添加一条记录,需要指定表名
public boolean save(Record record,String tableName);
// 按照主键修改数据库表的一条记录,需要指定表名和主键
public boolean update(Record record,String tableName,String pk);
// 按照id修改数据库表的一条记录,需要指定表名
public boolean update(Record record,String tableName);
// 按照主键查找到数据表中的一条记录,需要指定表名,主键名,主键值
public Record queryByKP(String tableName,String pk,Object val);
// 按照id查找到数据表中的一条记录,需要指定表名,主键值
public Record queryByKP(String tableName,Object val);
```
### 还有更多好玩的东西可以去源码中找哦