diff --git a/docs/datasource.md b/docs/datasource.md index 7dcd1f4b1..0e38e869c 100644 --- a/docs/datasource.md +++ b/docs/datasource.md @@ -46,7 +46,7 @@ redkale.datasource.platf.password = pwd123 ``` -   使用vertx-mysql-client实现, 需要依赖官方扩展包 ```redkale-plugins```: +   异步场景可使用vertx-mysql-client实现, 需要依赖官方扩展包 ```redkale-plugins```: ```xml org.redkalex diff --git a/src/main/java/org/redkale/source/AbstractDataSqlSource.java b/src/main/java/org/redkale/source/AbstractDataSqlSource.java index 9ca2d2ff3..c911db9d3 100644 --- a/src/main/java/org/redkale/source/AbstractDataSqlSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSqlSource.java @@ -2951,7 +2951,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement protected CompletableFuture existsDBApply(EntityInfo info, CompletableFuture future, boolean onlypk) { return future.thenApply((DataResultSet pgset) -> { - boolean rs = pgset.next() ? (((Number) pgset.getObject(1)).intValue() > 0) : false; + boolean rs = pgset.next() && (((Number) pgset.getObject(1)).intValue() > 0); pgset.close(); return rs; }); diff --git a/src/main/java/org/redkale/source/DistributeTableStrategy.java b/src/main/java/org/redkale/source/DistributeTableStrategy.java index 76b112052..104b2618e 100644 --- a/src/main/java/org/redkale/source/DistributeTableStrategy.java +++ b/src/main/java/org/redkale/source/DistributeTableStrategy.java @@ -14,7 +14,7 @@ import java.io.Serializable; * *

* 详情见: https://redkale.org - * + * * @see org.redkale.source.DistributeTable * * @author zhangjx @@ -22,6 +22,48 @@ import java.io.Serializable; */ public interface DistributeTableStrategy { + /** + * 获取DataSource资源名,为null表示没有分布物理库
+ * 查询单个对象(DataSource.find)时调用本方法
+ * + * @param primary 记录主键 + * + * @return DataSource资源名 + * + * @since 2.8.0 + */ + default String getSource(Serializable primary) { + return null; + } + + /** + * 获取DataSource资源名,为null表示没有分布物理库
+ * 新增对象或更新单个对象(DataSource.insert、DataSource.update)时调用本方法
+ * + * @param bean 实体对象 + * + * @return DataSource资源名 + * + * @since 2.8.0 + */ + default String getSource(T bean) { + return null; + } + + /** + * 获取DataSource资源名,为null表示没有分布物理库
+ * 查询、修改、删除对象(DataSource.find、DataSource.query、DataSource.delete、DataSource.update)时调用本方法
+ * + * @param node 过滤条件 + * + * @return DataSource资源名 + * + * @since 2.8.0 + */ + default String getSource(FilterNode node) { + return null; + } + /** * 获取对象的表名
* 查询单个对象(DataSource.find)时调用本方法获取表名
@@ -63,7 +105,7 @@ public interface DistributeTableStrategy { * 注意: 需保证FilterNode过滤的结果集合必须在一个数据库表中
* * @deprecated 2.8.0 replaced by getTables(String table, FilterNode node) - * @see #getTables(java.lang.String, org.redkale.source.FilterNode) + * @see #getTables(java.lang.String, org.redkale.source.FilterNode) * * @param table 模板表的表名 * @param node 过滤条件 diff --git a/src/main/java/org/redkale/source/EntityInfo.java b/src/main/java/org/redkale/source/EntityInfo.java index c0e1ce3df..409f3b7f1 100644 --- a/src/main/java/org/redkale/source/EntityInfo.java +++ b/src/main/java/org/redkale/source/EntityInfo.java @@ -1195,6 +1195,48 @@ public final class EntityInfo { return map; } + /** + * 获取DataSource资源名,为null表示没有分布物理库 + * + * @param primary Entity主键值 + * + * @return String + */ + public String getSource(Serializable primary) { + if (tableStrategy == null) { + return null; + } + return tableStrategy.getSource(primary); + } + + /** + * 获取DataSource资源名,为null表示没有分布物理库 + * + * @param bean Entity实体 + * + * @return String + */ + public String getSource(T bean) { + if (tableStrategy == null) { + return null; + } + return tableStrategy.getSource(bean); + } + + /** + * 获取DataSource资源名,为null表示没有分布物理库 + * + * @param node FilterNode + * + * @return String + */ + public String getSource(FilterNode node) { + if (tableStrategy == null) { + return null; + } + return tableStrategy.getSource(node); + } + /** * 根据主键值获取Entity的表名 * diff --git a/src/main/java/org/redkale/util/AnyValueWriter.java b/src/main/java/org/redkale/util/AnyValueWriter.java index fc6972729..9344f2f58 100644 --- a/src/main/java/org/redkale/util/AnyValueWriter.java +++ b/src/main/java/org/redkale/util/AnyValueWriter.java @@ -18,6 +18,8 @@ import org.redkale.convert.ConvertDisabled; * 详情见: https://redkale.org * * @author zhangjx + * + * @since 2.8.0 */ @SuppressWarnings("unchecked") public class AnyValueWriter extends AnyValue { diff --git a/src/main/java/org/redkale/util/XmlReader.java b/src/main/java/org/redkale/util/XmlReader.java index f722ffa76..05e10f175 100644 --- a/src/main/java/org/redkale/util/XmlReader.java +++ b/src/main/java/org/redkale/util/XmlReader.java @@ -7,7 +7,7 @@ package org.redkale.util; import java.nio.charset.StandardCharsets; import java.util.*; -import java.util.function.BiFunction; +import java.util.function.BinaryOperator; /** * 简单的xml读取器, 只读element节点信息,其他信息(如: namespace、comment、docdecl等)都会丢弃 @@ -31,7 +31,7 @@ public class XmlReader { protected int columnNumber; - protected BiFunction attrFunc; + protected BinaryOperator attrFunc; private static class TagNode { @@ -64,7 +64,7 @@ public class XmlReader { this.limit = start + len - 1; } - public XmlReader attrFunc(BiFunction func) { + public XmlReader attrFunc(BinaryOperator func) { this.attrFunc = func; return this; }