feat: 保证整体结构稳定
This commit is contained in:
parent
208ca062c6
commit
4742c1d50c
@ -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<CriteriaAdaptorFactory> 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("未实现当前查询的适配工厂!"));
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
@ -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<QueryChainFactory> FACTORIES =
|
||||
SpringFactoriesLoader.loadFactories(QueryChainFactory.class, null);
|
||||
|
||||
/**
|
||||
* 创建基于字符串字段名的查询
|
||||
@ -32,7 +28,8 @@ public final class Queries {
|
||||
* @return 结果
|
||||
*/
|
||||
public static QueryCondition<NamedQueryChain> where(String column) {
|
||||
return (QueryCondition<NamedQueryChain>) 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 <T extends Domain> QueryCondition<LambdaQueryChain<T>> where(Function<T, Object> getter) {
|
||||
return (QueryCondition<LambdaQueryChain<T>>) new Object();
|
||||
public static <T extends Domain> QueryCondition<LambdaQueryChain<T>> where(DomainFunction<T> getter) {
|
||||
LambdaQueryChain<T> 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 <T extends Domain> LambdaQueryChain<T> within(LambdaQueryChain<T> chain) {
|
||||
return (LambdaQueryChain<T>) new Object();
|
||||
LambdaQueryChain<T> 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
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ public interface QueryChain<C extends QueryChain<C, P>, P> extends QueryDefiniti
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @param <T> 泛型,支持其他类型的链
|
||||
* @param <V> 泛型,支持其他类型的链
|
||||
* @return 结果
|
||||
*/
|
||||
<V extends QueryChain<V, ?>> C and(Supplier<QueryChain<V, ?>> supplier);
|
||||
|
@ -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;
|
@ -0,0 +1,29 @@
|
||||
package com.flyfish.framework.query.spi;
|
||||
|
||||
import com.flyfish.framework.query.QueryChain;
|
||||
|
||||
/**
|
||||
* 查询链创建抽象工厂
|
||||
* 基于spi提供实现类,最终返回真正实例化的内容
|
||||
* 根据引入的jar包自动加载,无需手动处理
|
||||
*
|
||||
* @author wangyu
|
||||
*/
|
||||
public interface QueryChainFactory<C extends QueryChain<C, ?>> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
C produce();
|
||||
|
||||
/**
|
||||
* 判定是否支持特定的实例类型
|
||||
*
|
||||
* @param targetType 工厂目标类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
boolean supports(Class<?> targetType);
|
||||
}
|
@ -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<T extends Domain> implements QueryChainFactory<LambdaQueryChain<T>> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> produce() {
|
||||
return new MongoLambdaQueryChain<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判定是否支持特定的实例类型
|
||||
*
|
||||
* @param targetType 工厂目标类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> targetType) {
|
||||
return targetType.isAssignableFrom(MongoLambdaQueryChain.class);
|
||||
}
|
||||
}
|
@ -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<NamedQueryChain> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain produce() {
|
||||
return new MongoNamedQueryChain();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判定是否支持特定的实例类型
|
||||
*
|
||||
* @param targetType 工厂目标类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> targetType) {
|
||||
return targetType.isAssignableFrom(MongoNamedQueryChain.class);
|
||||
}
|
||||
}
|
@ -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<T extends Domain> extends MongoQueryDefinition implements LambdaQueryChain<T> {
|
||||
|
||||
/**
|
||||
* 以且连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<LambdaQueryChain<T>> and(DomainFunction<T> column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> LambdaQueryChain<T> and(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> and(LambdaQueryChain<T> chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 多个嵌套子条件列表
|
||||
*
|
||||
* @param lambdaQueryChains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> and(List<LambdaQueryChain<T>> lambdaQueryChains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<LambdaQueryChain<T>> or(DomainFunction<T> column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> or(LambdaQueryChain<T> chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接嵌套多个子条件列表
|
||||
*
|
||||
* @param lambdaQueryChains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> or(List<LambdaQueryChain<T>> lambdaQueryChains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> LambdaQueryChain<T> or(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -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<NamedQueryChain> and(String column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> NamedQueryChain and(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain and(NamedQueryChain chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 多个嵌套子条件列表
|
||||
*
|
||||
* @param chains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain and(List<NamedQueryChain> chains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<NamedQueryChain> 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<NamedQueryChain> chains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> NamedQueryChain or(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -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> T build() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改,此修改会直接接着查询条件进行拼接
|
||||
*
|
||||
* @return 修改句柄
|
||||
*/
|
||||
@Override
|
||||
public QueryMutation mutate() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 会直接添加嵌套查询到当前查询末尾
|
||||
*
|
||||
* @return 修改句柄
|
||||
*/
|
||||
@Override
|
||||
public QueryMutation within() {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
com.flyfish.framework.query.spi.QueryChainFactory=\
|
||||
com.flyfish.framework.mongodb.query.factory.MongoNamedQueryFactory,\
|
||||
com.flyfish.framework.mongodb.query.factory.MongoLambdaQueryFactory
|
@ -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;
|
||||
}
|
||||
}
|
@ -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<T extends Domain> implements QueryChainFactory<LambdaQueryChain<T>> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> produce() {
|
||||
return new R2dbcLambdaQueryChain<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判定是否支持特定的实例类型
|
||||
*
|
||||
* @param targetType 工厂目标类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> targetType) {
|
||||
return targetType.isAssignableFrom(R2dbcLambdaQueryChain.class);
|
||||
}
|
||||
}
|
@ -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<NamedQueryChain> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain produce() {
|
||||
return new R2dbcNamedQueryChain();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判定是否支持特定的实例类型
|
||||
*
|
||||
* @param targetType 工厂目标类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
@Override
|
||||
public boolean supports(Class<?> targetType) {
|
||||
return targetType.isAssignableFrom(R2dbcNamedQueryChain.class);
|
||||
}
|
||||
}
|
@ -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<T extends Domain> extends R2dbcQueryDefinition implements LambdaQueryChain<T> {
|
||||
|
||||
/**
|
||||
* 以且连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<LambdaQueryChain<T>> and(DomainFunction<T> column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> LambdaQueryChain<T> and(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> and(LambdaQueryChain<T> chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 多个嵌套子条件列表
|
||||
*
|
||||
* @param lambdaQueryChains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> and(List<LambdaQueryChain<T>> lambdaQueryChains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<LambdaQueryChain<T>> or(DomainFunction<T> column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> or(LambdaQueryChain<T> chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接嵌套多个子条件列表
|
||||
*
|
||||
* @param lambdaQueryChains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public LambdaQueryChain<T> or(List<LambdaQueryChain<T>> lambdaQueryChains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> LambdaQueryChain<T> or(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -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<NamedQueryChain> and(String column) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> NamedQueryChain and(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件列表
|
||||
*
|
||||
* @param chain 多个条件们
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain and(NamedQueryChain chain) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 多个嵌套子条件列表
|
||||
*
|
||||
* @param chains 多条链
|
||||
* @param combinator 各个链条之间的连接方式
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public NamedQueryChain and(List<NamedQueryChain> chains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以或连接下一个字段
|
||||
*
|
||||
* @param column 列
|
||||
* @return 查询条件
|
||||
*/
|
||||
@Override
|
||||
public QueryCondition<NamedQueryChain> 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<NamedQueryChain> chains, Queries.Combinator combinator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接拼接提供者,此处懒加载,最终build才会执行
|
||||
*
|
||||
* @param supplier 提供者
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public <V extends QueryChain<V, ?>> NamedQueryChain or(Supplier<QueryChain<V, ?>> supplier) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -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> T build() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改,此修改会直接接着查询条件进行拼接
|
||||
*
|
||||
* @return 修改句柄
|
||||
*/
|
||||
@Override
|
||||
public QueryMutation mutate() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 会直接添加嵌套查询到当前查询末尾
|
||||
*
|
||||
* @return 修改句柄
|
||||
*/
|
||||
@Override
|
||||
public QueryMutation within() {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
com.flyfish.framework.query.spi.QueryChainFactory=\
|
||||
com.flyfish.framework.r2dbc.query.factory.R2dbcLambdaQueryFactory,\
|
||||
com.flyfish.framework.r2dbc.query.factory.R2dbcNamedQueryFactory
|
Loading…
x
Reference in New Issue
Block a user