feat: 将灵感进行实现,后续待考虑
This commit is contained in:
parent
dd2f780249
commit
36ba7dbe40
@ -14,4 +14,5 @@ import org.springframework.data.repository.NoRepositoryBean;
|
||||
public interface DefaultReactiveRepository<T> extends ReactiveMongoRepository<T, String>, ReactiveQueryModelExecutor<T>,
|
||||
DomainRepository<T> {
|
||||
|
||||
|
||||
}
|
||||
|
@ -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会拼接.$id,mysql一律匹配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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user