diff --git a/CHANGELOG.md b/CHANGELOG.md index b3209ae24..1f57d8372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 】 修复原始类型转换时,转换失败没有抛出异常的问题 diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java index ae6b0fca0..21086f5f9 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java @@ -28,7 +28,6 @@ public class ServiceLoaderUtil { */ public static T loadFirstAvailable(Class clazz) { final Iterator iterator = load(clazz).iterator(); - //noinspection WhileLoopReplaceableByForEach while(iterator.hasNext()){ try { return iterator.next(); diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml index f68516a50..0cdb5b4e0 100644 --- a/hutool-db/pom.xml +++ b/hutool-db/pom.xml @@ -71,6 +71,12 @@ ${c3p0.version} true + + com.github.chris2018998 + BeeCP + 2.5.3 + true + org.apache.commons commons-dbcp2 diff --git a/hutool-db/src/main/java/cn/hutool/db/ds/DSFactory.java b/hutool-db/src/main/java/cn/hutool/db/ds/DSFactory.java index 89f848c9d..3b82c1d8b 100644 --- a/hutool-db/src/main/java/cn/hutool/db/ds/DSFactory.java +++ b/hutool-db/src/main/java/cn/hutool/db/ds/DSFactory.java @@ -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{ /** * 创建数据源实现工厂
* 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂
- * 连接池优先级: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) { diff --git a/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java b/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java new file mode 100644 index 000000000..59cc20d6c --- /dev/null +++ b/hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java @@ -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); + } +} diff --git a/hutool-db/src/main/java/cn/hutool/db/ds/bee/package-info.java b/hutool-db/src/main/java/cn/hutool/db/ds/bee/package-info.java new file mode 100644 index 000000000..3a30e4d5c --- /dev/null +++ b/hutool-db/src/main/java/cn/hutool/db/ds/bee/package-info.java @@ -0,0 +1,8 @@ +/** + * BeeCP封装 + * 见:https://github.com/Chris2018998/BeeCP + * + * @author looly + * + */ +package cn.hutool.db.ds.bee; \ No newline at end of file diff --git a/hutool-db/src/main/java/cn/hutool/db/ds/hikari/HikariDSFactory.java b/hutool-db/src/main/java/cn/hutool/db/ds/hikari/HikariDSFactory.java index a1a046158..25422b452 100644 --- a/hutool-db/src/main/java/cn/hutool/db/ds/hikari/HikariDSFactory.java +++ b/hutool-db/src/main/java/cn/hutool/db/ds/hikari/HikariDSFactory.java @@ -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; diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/handler/RowHandler.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/handler/RowHandler.java index 95e035172..07ffef01f 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/handler/RowHandler.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/handler/RowHandler.java @@ -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 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 } }