diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptors.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptors.java deleted file mode 100644 index c3771ca..0000000 --- a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptors.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.flyfish.framework.adaptor; - -import com.flyfish.framework.adaptor.spi.CriteriaAdaptorFactory; -import org.springframework.core.io.support.SpringFactoriesLoader; -import org.springframework.dao.InvalidDataAccessApiUsageException; - -import java.util.List; - -/** - * 可以通过该工具类快速创建适配器 - * - * @author wangyu - */ -public final class CriteriaAdaptors { - - private static final List FACTORIES = - SpringFactoriesLoader.loadFactories(CriteriaAdaptorFactory.class, null); - - public static CriteriaAdaptor getAdaptor() { - return FACTORIES.stream() - .findFirst() - .map(CriteriaAdaptorFactory::produce) - .orElseThrow(() -> new InvalidDataAccessApiUsageException("未实现当前查询的适配工厂!")); - } - - - public static CriteriaAdaptor getAdaptor(Object criteria) { - return FACTORIES.stream() - .filter(factory -> factory.criteriaType().isAssignableFrom(criteria.getClass())) - .findFirst() - .map(CriteriaAdaptorFactory::produce) - .orElseThrow(() -> new InvalidDataAccessApiUsageException("未实现当前查询的适配工厂!")); - } -} diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/spi/CriteriaAdaptorFactory.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/spi/CriteriaAdaptorFactory.java deleted file mode 100644 index 192fe7a..0000000 --- a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/spi/CriteriaAdaptorFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.flyfish.framework.adaptor.spi; - -import com.flyfish.framework.adaptor.CriteriaAdaptor; - -/** - * 查询适配器 - * 基于spi提供实现类,最终返回对应的 - * - * @author wangyu - */ -public interface CriteriaAdaptorFactory { - - /** - * 生产适配器 - * - * @return 结果 - */ - CriteriaAdaptor produce(); - - /** - * 查询类型 - * - * @return 结果 - */ - Class criteriaType(); -} diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/Queries.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/Queries.java index 4980664..84462fb 100644 --- a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/Queries.java +++ b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/Queries.java @@ -1,9 +1,12 @@ package com.flyfish.framework.query; import com.flyfish.framework.domain.base.Domain; -import com.flyfish.framework.domain.base.Qo; +import com.flyfish.framework.query.spi.QueryChainFactory; +import com.flyfish.framework.query.support.DomainFunction; +import org.springframework.core.io.support.SpringFactoriesLoader; +import org.springframework.dao.InvalidDataAccessApiUsageException; -import java.util.function.Function; +import java.util.List; /** * 查询工具类 @@ -15,15 +18,8 @@ import java.util.function.Function; */ public final class Queries { - /** - * 通过qo快速创建一个绑定上下文 - * - * @param qo 查询实体 - * @return 结果 - */ - public static NamedQueryChain of(Qo qo) { - return (NamedQueryChain) new Object(); - } + private static final List FACTORIES = + SpringFactoriesLoader.loadFactories(QueryChainFactory.class, null); /** * 创建基于字符串字段名的查询 @@ -32,7 +28,8 @@ public final class Queries { * @return 结果 */ public static QueryCondition where(String column) { - return (QueryCondition) new Object(); + NamedQueryChain chain = getFactory(NamedQueryChain.class).produce(); + return chain.and(column); } /** @@ -41,8 +38,9 @@ public final class Queries { * @param getter 列引用 * @return 结果 */ - public static QueryCondition> where(Function getter) { - return (QueryCondition>) new Object(); + public static QueryCondition> where(DomainFunction getter) { + LambdaQueryChain chain = getFactory(LambdaQueryChain.class).produce(); + return chain.and(getter); } /** @@ -52,7 +50,8 @@ public final class Queries { * @return 结果 */ public static NamedQueryChain within(NamedQueryChain chain) { - return (NamedQueryChain) new Object(); + NamedQueryChain created = getFactory(LambdaQueryChain.class).produce(); + return created.and(chain); } @@ -63,7 +62,21 @@ public final class Queries { * @return 结果 */ public static LambdaQueryChain within(LambdaQueryChain chain) { - return (LambdaQueryChain) new Object(); + LambdaQueryChain created = getFactory(LambdaQueryChain.class).produce(); + return created.and(chain); + } + + /** + * 通过特定产出类获取工厂 + * + * @param targetType 目标类型 + * @return 匹配的工厂 + */ + private static QueryChainFactory getFactory(Class targetType) { + return FACTORIES.stream() + .filter(factory -> factory.supports(targetType)) + .findFirst() + .orElseThrow(() -> new InvalidDataAccessApiUsageException("未实现当前查询的适配工厂!")); } /** @@ -81,5 +94,4 @@ public final class Queries { LEFT, RIGHT, ALL } - } diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/QueryChain.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/QueryChain.java index ccc8899..e0ed7ed 100644 --- a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/QueryChain.java +++ b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/QueryChain.java @@ -28,7 +28,7 @@ public interface QueryChain, P> extends QueryDefiniti * 直接拼接提供者,此处懒加载,最终build才会执行 * * @param supplier 提供者 - * @param 泛型,支持其他类型的链 + * @param 泛型,支持其他类型的链 * @return 结果 */ > C and(Supplier> supplier); diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/README.md b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/README.md similarity index 100% rename from flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/README.md rename to flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/README.md diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptor.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/adaptor/CriteriaAdaptor.java similarity index 98% rename from flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptor.java rename to flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/adaptor/CriteriaAdaptor.java index 3c15229..4628a40 100644 --- a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/adaptor/CriteriaAdaptor.java +++ b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/adaptor/CriteriaAdaptor.java @@ -1,4 +1,4 @@ -package com.flyfish.framework.adaptor; +package com.flyfish.framework.query.adaptor; import org.bson.BsonRegularExpression; import org.springframework.data.domain.Example; diff --git a/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/spi/QueryChainFactory.java b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/spi/QueryChainFactory.java new file mode 100644 index 0000000..5ed27e5 --- /dev/null +++ b/flyfish-data/flyfish-data-common/src/main/java/com/flyfish/framework/query/spi/QueryChainFactory.java @@ -0,0 +1,29 @@ +package com.flyfish.framework.query.spi; + +import com.flyfish.framework.query.QueryChain; + +/** + * 查询链创建抽象工厂 + * 基于spi提供实现类,最终返回真正实例化的内容 + * 根据引入的jar包自动加载,无需手动处理 + * + * @author wangyu + */ +public interface QueryChainFactory> { + + /** + * 生产适配器 + * 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展 + * + * @return 生产结果 + */ + C produce(); + + /** + * 判定是否支持特定的实例类型 + * + * @param targetType 工厂目标类型 + * @return 是否匹配 + */ + boolean supports(Class targetType); +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoLambdaQueryFactory.java b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoLambdaQueryFactory.java new file mode 100644 index 0000000..9e6b9a3 --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoLambdaQueryFactory.java @@ -0,0 +1,38 @@ +package com.flyfish.framework.mongodb.query.factory; + +import com.flyfish.framework.domain.base.Domain; +import com.flyfish.framework.mongodb.query.impl.MongoLambdaQueryChain; +import com.flyfish.framework.mongodb.query.impl.MongoNamedQueryChain; +import com.flyfish.framework.query.LambdaQueryChain; +import com.flyfish.framework.query.QueryChain; +import com.flyfish.framework.query.spi.QueryChainFactory; + +/** + * mongo lambda 查询工厂 + * + * @author wangyu + */ +public class MongoLambdaQueryFactory implements QueryChainFactory> { + + /** + * 生产适配器 + * 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展 + * + * @return 生产结果 + */ + @Override + public LambdaQueryChain produce() { + return new MongoLambdaQueryChain<>(); + } + + /** + * 判定是否支持特定的实例类型 + * + * @param targetType 工厂目标类型 + * @return 是否匹配 + */ + @Override + public boolean supports(Class targetType) { + return targetType.isAssignableFrom(MongoLambdaQueryChain.class); + } +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoNamedQueryFactory.java b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoNamedQueryFactory.java new file mode 100644 index 0000000..92444e7 --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/factory/MongoNamedQueryFactory.java @@ -0,0 +1,35 @@ +package com.flyfish.framework.mongodb.query.factory; + +import com.flyfish.framework.mongodb.query.impl.MongoNamedQueryChain; +import com.flyfish.framework.query.NamedQueryChain; +import com.flyfish.framework.query.spi.QueryChainFactory; + +/** + * mongo名称查询工厂 + * + * @author wangyu + */ +public class MongoNamedQueryFactory implements QueryChainFactory { + + /** + * 生产适配器 + * 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展 + * + * @return 生产结果 + */ + @Override + public NamedQueryChain produce() { + return new MongoNamedQueryChain(); + } + + /** + * 判定是否支持特定的实例类型 + * + * @param targetType 工厂目标类型 + * @return 是否匹配 + */ + @Override + public boolean supports(Class targetType) { + return targetType.isAssignableFrom(MongoNamedQueryChain.class); + } +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoLambdaQueryChain.java b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoLambdaQueryChain.java new file mode 100644 index 0000000..1d64bcf --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoLambdaQueryChain.java @@ -0,0 +1,106 @@ +package com.flyfish.framework.mongodb.query.impl; + +import com.flyfish.framework.domain.base.Domain; +import com.flyfish.framework.query.*; +import com.flyfish.framework.query.support.DomainFunction; + +import java.util.List; +import java.util.function.Supplier; + +/** + * mongodb实现的基于lambda的查询链 + * + * @author wangyu + */ +public class MongoLambdaQueryChain extends MongoQueryDefinition implements LambdaQueryChain { + + /** + * 以且连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition> and(DomainFunction column) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > LambdaQueryChain and(Supplier> supplier) { + return null; + } + + /** + * 条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public LambdaQueryChain and(LambdaQueryChain chain) { + return null; + } + + /** + * 多个嵌套子条件列表 + * + * @param lambdaQueryChains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public LambdaQueryChain and(List> lambdaQueryChains, Queries.Combinator combinator) { + return null; + } + + /** + * 以或连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition> or(DomainFunction column) { + return null; + } + + /** + * 以或连接条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public LambdaQueryChain or(LambdaQueryChain chain) { + return null; + } + + /** + * 以或连接嵌套多个子条件列表 + * + * @param lambdaQueryChains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public LambdaQueryChain or(List> lambdaQueryChains, Queries.Combinator combinator) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > LambdaQueryChain or(Supplier> supplier) { + return null; + } +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoNamedQueryChain.java b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoNamedQueryChain.java new file mode 100644 index 0000000..1083617 --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoNamedQueryChain.java @@ -0,0 +1,107 @@ +package com.flyfish.framework.mongodb.query.impl; + +import com.flyfish.framework.query.NamedQueryChain; +import com.flyfish.framework.query.Queries; +import com.flyfish.framework.query.QueryChain; +import com.flyfish.framework.query.QueryCondition; + +import java.util.List; +import java.util.function.Supplier; + +/** + * mongodb实现的基于名称的查询链 + * + * @author wangyu + */ +public class MongoNamedQueryChain extends MongoQueryDefinition implements NamedQueryChain { + + /** + * 以且连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition and(String column) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > NamedQueryChain and(Supplier> supplier) { + return null; + } + + /** + * 条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public NamedQueryChain and(NamedQueryChain chain) { + return null; + } + + /** + * 多个嵌套子条件列表 + * + * @param chains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public NamedQueryChain and(List chains, Queries.Combinator combinator) { + return null; + } + + /** + * 以或连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition or(String column) { + return null; + } + + /** + * 以或连接条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public NamedQueryChain or(NamedQueryChain chain) { + return null; + } + + /** + * 以或连接嵌套多个子条件列表 + * + * @param chains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public NamedQueryChain or(List chains, Queries.Combinator combinator) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > NamedQueryChain or(Supplier> supplier) { + return null; + } +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoQueryDefinition.java b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoQueryDefinition.java new file mode 100644 index 0000000..6459470 --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/java/com/flyfish/framework/mongodb/query/impl/MongoQueryDefinition.java @@ -0,0 +1,42 @@ +package com.flyfish.framework.mongodb.query.impl; + +import com.flyfish.framework.query.QueryDefinition; +import com.flyfish.framework.query.QueryMutation; + +/** + * mongo的查询定义 + * + * @author wangyu + */ +public class MongoQueryDefinition implements QueryDefinition { + + /** + * 构建 + * + * @return 构建结果 + */ + @Override + public T build() { + return null; + } + + /** + * 修改,此修改会直接接着查询条件进行拼接 + * + * @return 修改句柄 + */ + @Override + public QueryMutation mutate() { + return null; + } + + /** + * 会直接添加嵌套查询到当前查询末尾 + * + * @return 修改句柄 + */ + @Override + public QueryMutation within() { + return null; + } +} diff --git a/flyfish-data/flyfish-data-mongodb/src/main/resources/META-INF/spring.factories b/flyfish-data/flyfish-data-mongodb/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..a69106b --- /dev/null +++ b/flyfish-data/flyfish-data-mongodb/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +com.flyfish.framework.query.spi.QueryChainFactory=\ + com.flyfish.framework.mongodb.query.factory.MongoNamedQueryFactory,\ + com.flyfish.framework.mongodb.query.factory.MongoLambdaQueryFactory diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/adaptor/R2DbcCriteriaAdaptorFactory.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/adaptor/R2DbcCriteriaAdaptorFactory.java deleted file mode 100644 index 5b59604..0000000 --- a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/adaptor/R2DbcCriteriaAdaptorFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.flyfish.framework.r2dbc.adaptor; - -import com.flyfish.framework.adaptor.CriteriaAdaptor; -import com.flyfish.framework.adaptor.spi.CriteriaAdaptorFactory; -import org.springframework.data.relational.core.query.Criteria; - - -/** - * 实现适配层和底层的转化 - * - * @author wangyu - */ -public class R2DbcCriteriaAdaptorFactory implements CriteriaAdaptorFactory { - - /** - * 生产适配器 - * - * @return 结果 - */ - @Override - public CriteriaAdaptor produce() { - return null; - } - - /** - * 查询类型 - * - * @return 结果 - */ - @Override - public Class criteriaType() { - return Criteria.class; - } -} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcLambdaQueryFactory.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcLambdaQueryFactory.java new file mode 100644 index 0000000..0f84d03 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcLambdaQueryFactory.java @@ -0,0 +1,36 @@ +package com.flyfish.framework.r2dbc.query.factory; + +import com.flyfish.framework.domain.base.Domain; +import com.flyfish.framework.query.LambdaQueryChain; +import com.flyfish.framework.query.spi.QueryChainFactory; +import com.flyfish.framework.r2dbc.query.impl.R2dbcLambdaQueryChain; + +/** + * mongo lambda 查询工厂 + * + * @author wangyu + */ +public class R2dbcLambdaQueryFactory implements QueryChainFactory> { + + /** + * 生产适配器 + * 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展 + * + * @return 生产结果 + */ + @Override + public LambdaQueryChain produce() { + return new R2dbcLambdaQueryChain<>(); + } + + /** + * 判定是否支持特定的实例类型 + * + * @param targetType 工厂目标类型 + * @return 是否匹配 + */ + @Override + public boolean supports(Class targetType) { + return targetType.isAssignableFrom(R2dbcLambdaQueryChain.class); + } +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcNamedQueryFactory.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcNamedQueryFactory.java new file mode 100644 index 0000000..68d1dd1 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/factory/R2dbcNamedQueryFactory.java @@ -0,0 +1,35 @@ +package com.flyfish.framework.r2dbc.query.factory; + +import com.flyfish.framework.query.NamedQueryChain; +import com.flyfish.framework.query.spi.QueryChainFactory; +import com.flyfish.framework.r2dbc.query.impl.R2dbcNamedQueryChain; + +/** + * mongo名称查询工厂 + * + * @author wangyu + */ +public class R2dbcNamedQueryFactory implements QueryChainFactory { + + /** + * 生产适配器 + * 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展 + * + * @return 生产结果 + */ + @Override + public NamedQueryChain produce() { + return new R2dbcNamedQueryChain(); + } + + /** + * 判定是否支持特定的实例类型 + * + * @param targetType 工厂目标类型 + * @return 是否匹配 + */ + @Override + public boolean supports(Class targetType) { + return targetType.isAssignableFrom(R2dbcNamedQueryChain.class); + } +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcLambdaQueryChain.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcLambdaQueryChain.java new file mode 100644 index 0000000..4927f59 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcLambdaQueryChain.java @@ -0,0 +1,109 @@ +package com.flyfish.framework.r2dbc.query.impl; + +import com.flyfish.framework.domain.base.Domain; +import com.flyfish.framework.query.LambdaQueryChain; +import com.flyfish.framework.query.Queries; +import com.flyfish.framework.query.QueryChain; +import com.flyfish.framework.query.QueryCondition; +import com.flyfish.framework.query.support.DomainFunction; + +import java.util.List; +import java.util.function.Supplier; + +/** + * mongodb实现的基于lambda的查询链 + * + * @author wangyu + */ +public class R2dbcLambdaQueryChain extends R2dbcQueryDefinition implements LambdaQueryChain { + + /** + * 以且连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition> and(DomainFunction column) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > LambdaQueryChain and(Supplier> supplier) { + return null; + } + + /** + * 条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public LambdaQueryChain and(LambdaQueryChain chain) { + return null; + } + + /** + * 多个嵌套子条件列表 + * + * @param lambdaQueryChains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public LambdaQueryChain and(List> lambdaQueryChains, Queries.Combinator combinator) { + return null; + } + + /** + * 以或连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition> or(DomainFunction column) { + return null; + } + + /** + * 以或连接条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public LambdaQueryChain or(LambdaQueryChain chain) { + return null; + } + + /** + * 以或连接嵌套多个子条件列表 + * + * @param lambdaQueryChains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public LambdaQueryChain or(List> lambdaQueryChains, Queries.Combinator combinator) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > LambdaQueryChain or(Supplier> supplier) { + return null; + } +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcNamedQueryChain.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcNamedQueryChain.java new file mode 100644 index 0000000..f8485bd --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcNamedQueryChain.java @@ -0,0 +1,107 @@ +package com.flyfish.framework.r2dbc.query.impl; + +import com.flyfish.framework.query.NamedQueryChain; +import com.flyfish.framework.query.Queries; +import com.flyfish.framework.query.QueryChain; +import com.flyfish.framework.query.QueryCondition; + +import java.util.List; +import java.util.function.Supplier; + +/** + * mongodb实现的基于名称的查询链 + * + * @author wangyu + */ +public class R2dbcNamedQueryChain extends R2dbcQueryDefinition implements NamedQueryChain { + + /** + * 以且连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition and(String column) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > NamedQueryChain and(Supplier> supplier) { + return null; + } + + /** + * 条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public NamedQueryChain and(NamedQueryChain chain) { + return null; + } + + /** + * 多个嵌套子条件列表 + * + * @param chains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public NamedQueryChain and(List chains, Queries.Combinator combinator) { + return null; + } + + /** + * 以或连接下一个字段 + * + * @param column 列 + * @return 查询条件 + */ + @Override + public QueryCondition or(String column) { + return null; + } + + /** + * 以或连接条件列表 + * + * @param chain 多个条件们 + * @return 结果 + */ + @Override + public NamedQueryChain or(NamedQueryChain chain) { + return null; + } + + /** + * 以或连接嵌套多个子条件列表 + * + * @param chains 多条链 + * @param combinator 各个链条之间的连接方式 + * @return 结果 + */ + @Override + public NamedQueryChain or(List chains, Queries.Combinator combinator) { + return null; + } + + /** + * 直接拼接提供者,此处懒加载,最终build才会执行 + * + * @param supplier 提供者 + * @return 结果 + */ + @Override + public > NamedQueryChain or(Supplier> supplier) { + return null; + } +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcQueryDefinition.java b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcQueryDefinition.java new file mode 100644 index 0000000..f41bee8 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/java/com/flyfish/framework/r2dbc/query/impl/R2dbcQueryDefinition.java @@ -0,0 +1,42 @@ +package com.flyfish.framework.r2dbc.query.impl; + +import com.flyfish.framework.query.QueryDefinition; +import com.flyfish.framework.query.QueryMutation; + +/** + * mongo的查询定义 + * + * @author wangyu + */ +public class R2dbcQueryDefinition implements QueryDefinition { + + /** + * 构建 + * + * @return 构建结果 + */ + @Override + public T build() { + return null; + } + + /** + * 修改,此修改会直接接着查询条件进行拼接 + * + * @return 修改句柄 + */ + @Override + public QueryMutation mutate() { + return null; + } + + /** + * 会直接添加嵌套查询到当前查询末尾 + * + * @return 修改句柄 + */ + @Override + public QueryMutation within() { + return null; + } +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/main/resources/META-INF/spring.factories b/flyfish-data/flyfish-data-r2dbc/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..ae2f258 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +com.flyfish.framework.query.spi.QueryChainFactory=\ + com.flyfish.framework.r2dbc.query.factory.R2dbcLambdaQueryFactory,\ + com.flyfish.framework.r2dbc.query.factory.R2dbcNamedQueryFactory