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>,
|
public interface DefaultReactiveRepository<T> extends ReactiveMongoRepository<T, String>, ReactiveQueryModelExecutor<T>,
|
||||||
DomainRepository<T> {
|
DomainRepository<T> {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,12 @@ import com.flyfish.framework.query.NamedQueryChain;
|
|||||||
import com.flyfish.framework.query.Queries;
|
import com.flyfish.framework.query.Queries;
|
||||||
import com.flyfish.framework.query.QueryChain;
|
import com.flyfish.framework.query.QueryChain;
|
||||||
import com.flyfish.framework.query.QueryCondition;
|
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.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -23,7 +27,7 @@ public class MongoNamedQueryChain extends MongoQueryDefinition implements NamedQ
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public QueryCondition<NamedQueryChain> and(String column) {
|
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) {
|
public <V extends QueryChain<V, ?>> NamedQueryChain or(Supplier<QueryChain<V, ?>> supplier) {
|
||||||
return null;
|
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.QueryDefinition;
|
||||||
import com.flyfish.framework.query.QueryMutation;
|
import com.flyfish.framework.query.QueryMutation;
|
||||||
|
import org.springframework.data.mongodb.core.query.Criteria;
|
||||||
|
import org.springframework.data.util.CastUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mongo的查询定义
|
* mongo的查询定义
|
||||||
@ -10,6 +12,8 @@ import com.flyfish.framework.query.QueryMutation;
|
|||||||
*/
|
*/
|
||||||
public class MongoQueryDefinition implements QueryDefinition {
|
public class MongoQueryDefinition implements QueryDefinition {
|
||||||
|
|
||||||
|
protected final Criteria criteria = new Criteria();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建
|
* 构建
|
||||||
*
|
*
|
||||||
@ -17,7 +21,7 @@ public class MongoQueryDefinition implements QueryDefinition {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public <T> T build() {
|
public <T> T build() {
|
||||||
return null;
|
return CastUtils.cast(criteria);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user