feat: 将灵感进行实现,后续待考虑

This commit is contained in:
wangyu 2022-08-05 17:22:05 +08:00
parent dd2f780249
commit 36ba7dbe40
3 changed files with 141 additions and 2 deletions

View File

@ -14,4 +14,5 @@ import org.springframework.data.repository.NoRepositoryBean;
public interface DefaultReactiveRepository<T> extends ReactiveMongoRepository<T, String>, ReactiveQueryModelExecutor<T>,
DomainRepository<T> {
}

View File

@ -4,8 +4,12 @@ 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 lombok.RequiredArgsConstructor;
import org.springframework.data.mongodb.core.query.Criteria;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
/**
@ -23,7 +27,7 @@ public class MongoNamedQueryChain extends MongoQueryDefinition implements NamedQ
*/
@Override
public QueryCondition<NamedQueryChain> and(String column) {
return null;
return new NamedQueryCondition(column);
}
/**
@ -104,4 +108,134 @@ public class MongoNamedQueryChain extends MongoQueryDefinition implements NamedQ
public <V extends QueryChain<V, ?>> NamedQueryChain or(Supplier<QueryChain<V, ?>> supplier) {
return null;
}
/**
* 条件操作实现
*
* @author wangyu
*/
@RequiredArgsConstructor
class NamedQueryCondition implements QueryCondition<NamedQueryChain> {
private final String column;
/**
* 相等判定
*
* @param value
* @return 结果
*/
@Override
public NamedQueryChain eq(Object value) {
MongoNamedQueryChain.this.criteria.is(value);
return MongoNamedQueryChain.this;
}
/**
* 判定某列的值中存在指定值特指json array数据类型且子类型中带有id的场景
* 用于兼容mongodb查询mysql查询使用JSON_CONTAINS进行判定
* 当且仅当mongodb会拼接.$idmysql一律匹配id字段
* <p>
* 等价于 .eq(value)
*
* @param value
* @return 结果
*/
@Override
public NamedQueryChain hasId(Object value) {
return null;
}
/**
* 对于mongodb自动处理对于关系型数据库代表json array中是否包含对应值值仅支持基本数据类型
* <p>
* 等价于 .eq(value)
*
* @param value 基本数据类型的值
* @return 结果
*/
@Override
public NamedQueryChain has(Object value) {
return null;
}
/**
* 不等判定
*
* @param value
* @return 结果
*/
@Override
public NamedQueryChain ne(Object value) {
return null;
}
/**
* 值介于两者之间
*
* @param items 双值列表
* @return 结果
*/
@Override
public NamedQueryChain between(List<?> items) {
return null;
}
/**
* 模糊匹配这里是全模糊
*
* @param keyword 查询关键字
* @return 结果
*/
@Override
public NamedQueryChain like(String keyword) {
return null;
}
/**
* 根据指定的方向进行模糊查询
*
* @param keyword 关键字
* @param direction 方向可以匹配开头和结尾
* @return 结果
*/
@Override
public NamedQueryChain like(String keyword, Queries.Direction direction) {
return null;
}
/**
* 判定为空
*
* @return 结果
*/
@Override
public NamedQueryChain isNull() {
return null;
}
/**
* 包含在内
*
* @param list 集合
* @return 结果
*/
@Override
public NamedQueryChain in(Collection<?> list) {
return null;
}
/**
* 包含在内
* 注意需要根据字段类型推断
* 如果是json数组需要进行双向匹配
*
* @param values 值们
* @return 结果
*/
@Override
public NamedQueryChain in(Object... values) {
return null;
}
}
}

View File

@ -2,6 +2,8 @@ package com.flyfish.framework.mongodb.query.impl;
import com.flyfish.framework.query.QueryDefinition;
import com.flyfish.framework.query.QueryMutation;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.util.CastUtils;
/**
* mongo的查询定义
@ -10,6 +12,8 @@ import com.flyfish.framework.query.QueryMutation;
*/
public class MongoQueryDefinition implements QueryDefinition {
protected final Criteria criteria = new Criteria();
/**
* 构建
*
@ -17,7 +21,7 @@ public class MongoQueryDefinition implements QueryDefinition {
*/
@Override
public <T> T build() {
return null;
return CastUtils.cast(criteria);
}
/**