mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
add BeeCP support
This commit is contained in:
parent
2f64b3b85d
commit
ef235aab5d
@ -21,6 +21,8 @@
|
|||||||
* 【extra 】 SpringUtil增加getBean(TypeReference)(pr#1009@Github)
|
* 【extra 】 SpringUtil增加getBean(TypeReference)(pr#1009@Github)
|
||||||
* 【core 】 Assert增加方法,支持自定义异常处理(pr#154@Gitee)
|
* 【core 】 Assert增加方法,支持自定义异常处理(pr#154@Gitee)
|
||||||
* 【core 】 BooleanConverter增加数字转换规则(issue#I1R2AB@Gitee)
|
* 【core 】 BooleanConverter增加数字转换规则(issue#I1R2AB@Gitee)
|
||||||
|
* 【poi 】 sax方式读取增加一个sheet结束的回调(issue#155@Gitee)
|
||||||
|
* 【db 】 增加BeeCP连接池支持
|
||||||
|
|
||||||
### Bug修复#
|
### Bug修复#
|
||||||
* 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题
|
* 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题
|
||||||
|
@ -28,7 +28,6 @@ public class ServiceLoaderUtil {
|
|||||||
*/
|
*/
|
||||||
public static <T> T loadFirstAvailable(Class<T> clazz) {
|
public static <T> T loadFirstAvailable(Class<T> clazz) {
|
||||||
final Iterator<T> iterator = load(clazz).iterator();
|
final Iterator<T> iterator = load(clazz).iterator();
|
||||||
//noinspection WhileLoopReplaceableByForEach
|
|
||||||
while(iterator.hasNext()){
|
while(iterator.hasNext()){
|
||||||
try {
|
try {
|
||||||
return iterator.next();
|
return iterator.next();
|
||||||
|
@ -71,6 +71,12 @@
|
|||||||
<version>${c3p0.version}</version>
|
<version>${c3p0.version}</version>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.chris2018998</groupId>
|
||||||
|
<artifactId>BeeCP</artifactId>
|
||||||
|
<version>2.5.3</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-dbcp2</artifactId>
|
<artifactId>commons-dbcp2</artifactId>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.hutool.db.ds;
|
package cn.hutool.db.ds;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.db.ds.bee.BeeDSFactory;
|
||||||
import cn.hutool.db.ds.c3p0.C3p0DSFactory;
|
import cn.hutool.db.ds.c3p0.C3p0DSFactory;
|
||||||
import cn.hutool.db.ds.dbcp.DbcpDSFactory;
|
import cn.hutool.db.ds.dbcp.DbcpDSFactory;
|
||||||
import cn.hutool.db.ds.druid.DruidDSFactory;
|
import cn.hutool.db.ds.druid.DruidDSFactory;
|
||||||
@ -156,7 +157,7 @@ public abstract class DSFactory implements Closeable, Serializable{
|
|||||||
/**
|
/**
|
||||||
* 创建数据源实现工厂<br>
|
* 创建数据源实现工厂<br>
|
||||||
* 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂<br>
|
* 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂<br>
|
||||||
* 连接池优先级:Hikari > Druid > Tomcat > Dbcp > C3p0 > Hutool Pooled
|
* 连接池优先级:Hikari > Druid > Tomcat > BeeCP > Dbcp > C3p0 > Hutool Pooled
|
||||||
*
|
*
|
||||||
* @param setting 数据库配置项
|
* @param setting 数据库配置项
|
||||||
* @return 日志实现类
|
* @return 日志实现类
|
||||||
@ -180,6 +181,11 @@ public abstract class DSFactory implements Closeable, Serializable{
|
|||||||
//因为org.apache.tomcat.jdbc.pool.DataSource实现了此接口,会首先检查接口的存在与否
|
//因为org.apache.tomcat.jdbc.pool.DataSource实现了此接口,会首先检查接口的存在与否
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
return new BeeDSFactory(setting);
|
||||||
|
} catch (NoClassDefFoundError e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
return new DbcpDSFactory(setting);
|
return new DbcpDSFactory(setting);
|
||||||
} catch (NoClassDefFoundError e) {
|
} catch (NoClassDefFoundError e) {
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
package cn.hutool.db.ds.bee;
|
||||||
|
|
||||||
|
import cn.beecp.BeeDataSource;
|
||||||
|
import cn.beecp.BeeDataSourceConfig;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.db.ds.AbstractDSFactory;
|
||||||
|
import cn.hutool.setting.Setting;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BeeCP数据源工厂类
|
||||||
|
*
|
||||||
|
* @author Looly
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BeeDSFactory extends AbstractDSFactory {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public static final String DS_NAME = "BeeCP";
|
||||||
|
|
||||||
|
public BeeDSFactory() {
|
||||||
|
this(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeeDSFactory(Setting setting) {
|
||||||
|
super(DS_NAME, BeeDataSource.class, setting);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected DataSource createDataSource(String jdbcUrl, String driver, String user, String pass, Setting poolSetting) {
|
||||||
|
|
||||||
|
final BeeDataSourceConfig beeConfig = new BeeDataSourceConfig(driver, jdbcUrl, user, pass);
|
||||||
|
poolSetting.toBean(beeConfig);
|
||||||
|
|
||||||
|
// remarks等特殊配置,since 5.3.8
|
||||||
|
String connValue;
|
||||||
|
for (String key : KEY_CONN_PROPS) {
|
||||||
|
connValue = poolSetting.getAndRemoveStr(key);
|
||||||
|
if(StrUtil.isNotBlank(connValue)){
|
||||||
|
beeConfig.addConnectProperty(key, connValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new BeeDataSource(beeConfig);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* BeeCP封装
|
||||||
|
* 见:https://github.com/Chris2018998/BeeCP
|
||||||
|
*
|
||||||
|
* @author looly
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package cn.hutool.db.ds.bee;
|
@ -1,6 +1,5 @@
|
|||||||
package cn.hutool.db.ds.hikari;
|
package cn.hutool.db.ds.hikari;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Console;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.db.ds.AbstractDSFactory;
|
import cn.hutool.db.ds.AbstractDSFactory;
|
||||||
import cn.hutool.setting.Setting;
|
import cn.hutool.setting.Setting;
|
||||||
|
@ -6,36 +6,38 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sax方式读取Excel行处理器
|
* Sax方式读取Excel行处理器
|
||||||
* @author looly
|
|
||||||
*
|
*
|
||||||
|
* @author looly
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
public interface RowHandler {
|
public interface RowHandler {
|
||||||
|
|
||||||
/**
|
|
||||||
* 处理一个单元格的数据
|
|
||||||
* @param sheetIndex 当前Sheet序号
|
|
||||||
* @param rowIndex 当前行号
|
|
||||||
* @param cellIndex 当前列号
|
|
||||||
* @param value 单元格的值
|
|
||||||
* @param xssfCellStyle 单元格样式
|
|
||||||
*/
|
|
||||||
default void handleCell(int sheetIndex, long rowIndex, int cellIndex, Object value, CellStyle xssfCellStyle){
|
|
||||||
//pass
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理一行数据
|
* 处理一行数据
|
||||||
|
*
|
||||||
* @param sheetIndex 当前Sheet序号
|
* @param sheetIndex 当前Sheet序号
|
||||||
* @param rowIndex 当前行号,从0开始计数
|
* @param rowIndex 当前行号,从0开始计数
|
||||||
* @param rowList 行数据列表
|
* @param rowList 行数据列表
|
||||||
*/
|
*/
|
||||||
void handle(int sheetIndex, long rowIndex, List<Object> rowList);
|
void handle(int sheetIndex, long rowIndex, List<Object> rowList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理一个单元格的数据
|
||||||
|
*
|
||||||
|
* @param sheetIndex 当前Sheet序号
|
||||||
|
* @param rowIndex 当前行号
|
||||||
|
* @param cellIndex 当前列号
|
||||||
|
* @param value 单元格的值
|
||||||
|
* @param xssfCellStyle 单元格样式
|
||||||
|
*/
|
||||||
|
default void handleCell(int sheetIndex, long rowIndex, int cellIndex, Object value, CellStyle xssfCellStyle) {
|
||||||
|
//pass
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理一个sheet页完成的操作
|
* 处理一个sheet页完成的操作
|
||||||
*/
|
*/
|
||||||
default void doAfterAllAnalysed(){
|
default void doAfterAllAnalysed() {
|
||||||
//pass
|
//pass
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user