mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +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)
|
||||
* 【core 】 Assert增加方法,支持自定义异常处理(pr#154@Gitee)
|
||||
* 【core 】 BooleanConverter增加数字转换规则(issue#I1R2AB@Gitee)
|
||||
* 【poi 】 sax方式读取增加一个sheet结束的回调(issue#155@Gitee)
|
||||
* 【db 】 增加BeeCP连接池支持
|
||||
|
||||
### Bug修复#
|
||||
* 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题
|
||||
|
@ -28,7 +28,6 @@ public class ServiceLoaderUtil {
|
||||
*/
|
||||
public static <T> T loadFirstAvailable(Class<T> clazz) {
|
||||
final Iterator<T> iterator = load(clazz).iterator();
|
||||
//noinspection WhileLoopReplaceableByForEach
|
||||
while(iterator.hasNext()){
|
||||
try {
|
||||
return iterator.next();
|
||||
|
@ -71,6 +71,12 @@
|
||||
<version>${c3p0.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.chris2018998</groupId>
|
||||
<artifactId>BeeCP</artifactId>
|
||||
<version>2.5.3</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-dbcp2</artifactId>
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.hutool.db.ds;
|
||||
|
||||
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.dbcp.DbcpDSFactory;
|
||||
import cn.hutool.db.ds.druid.DruidDSFactory;
|
||||
@ -156,7 +157,7 @@ public abstract class DSFactory implements Closeable, Serializable{
|
||||
/**
|
||||
* 创建数据源实现工厂<br>
|
||||
* 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂<br>
|
||||
* 连接池优先级:Hikari > Druid > Tomcat > Dbcp > C3p0 > Hutool Pooled
|
||||
* 连接池优先级:Hikari > Druid > Tomcat > BeeCP > Dbcp > C3p0 > Hutool Pooled
|
||||
*
|
||||
* @param setting 数据库配置项
|
||||
* @return 日志实现类
|
||||
@ -180,6 +181,11 @@ public abstract class DSFactory implements Closeable, Serializable{
|
||||
//因为org.apache.tomcat.jdbc.pool.DataSource实现了此接口,会首先检查接口的存在与否
|
||||
// ignore
|
||||
}
|
||||
try {
|
||||
return new BeeDSFactory(setting);
|
||||
} catch (NoClassDefFoundError e) {
|
||||
// ignore
|
||||
}
|
||||
try {
|
||||
return new DbcpDSFactory(setting);
|
||||
} 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;
|
||||
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.db.ds.AbstractDSFactory;
|
||||
import cn.hutool.setting.Setting;
|
||||
|
@ -6,36 +6,38 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* Sax方式读取Excel行处理器
|
||||
* @author looly
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
@FunctionalInterface
|
||||
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 rowIndex 当前行号,从0开始计数
|
||||
* @param rowList 行数据列表
|
||||
* @param rowIndex 当前行号,从0开始计数
|
||||
* @param 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页完成的操作
|
||||
*/
|
||||
default void doAfterAllAnalysed(){
|
||||
default void doAfterAllAnalysed() {
|
||||
//pass
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user