DataSqlSource增加natvieQuery的参数模板功能
This commit is contained in:
@@ -24,6 +24,7 @@ import org.redkale.persistence.Table;
|
|||||||
import org.redkale.service.Local;
|
import org.redkale.service.Local;
|
||||||
import org.redkale.source.EntityInfo.EntityColumn;
|
import org.redkale.source.EntityInfo.EntityColumn;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
import static org.redkale.util.Utility.isEmpty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DataSource的SQL抽象实现类 <br>
|
* DataSource的SQL抽象实现类 <br>
|
||||||
@@ -2193,7 +2194,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
if (sb.length() > 0) {
|
if (sb.length() > 0) {
|
||||||
sb.append(", ");
|
sb.append(", ");
|
||||||
}
|
}
|
||||||
sb.append(ffc.func.getColumn((col == null || col.isEmpty() ? "*" : info.getSQLColumn("a", col))));
|
sb.append(ffc.func.getColumn((isEmpty(col) ? "*" : info.getSQLColumn("a", col))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final String sql = "SELECT " + sb + " FROM " + tables[0] + " a"
|
final String sql = "SELECT " + sb + " FROM " + tables[0] + " a"
|
||||||
@@ -2271,7 +2272,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
final Set<String> haset = new HashSet<>();
|
final Set<String> haset = new HashSet<>();
|
||||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
||||||
final CharSequence where = node == null ? null : node.createSQLExpress(this, info, joinTabalis);
|
final CharSequence where = node == null ? null : node.createSQLExpress(this, info, joinTabalis);
|
||||||
final String sql = "SELECT " + func.getColumn((column == null || column.isEmpty() ? "*" : info.getSQLColumn("a", column))) + " FROM " + tables[0] + " a"
|
final String sql = "SELECT " + func.getColumn((isEmpty(column) ? "*" : info.getSQLColumn("a", column))) + " FROM " + tables[0] + " a"
|
||||||
+ (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
+ (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
@@ -3260,7 +3261,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
this.prepare = prepare;
|
this.prepare = prepare;
|
||||||
this.sql = sql;
|
this.sql = sql;
|
||||||
this.tables = tables;
|
this.tables = tables;
|
||||||
this.blobs = blobs == null || blobs.isEmpty() ? null : blobs;
|
this.blobs = isEmpty(blobs) ? null : blobs;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import org.redkale.annotation.Component;
|
import org.redkale.annotation.Component;
|
||||||
import org.redkale.convert.Convert;
|
import org.redkale.convert.Convert;
|
||||||
import org.redkale.util.Resourcable;
|
import org.redkale.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Redkale中缓存数据源的核心类。 主要供业务开发者使用, 技术开发者提供CacheSource的实现。<br>
|
* Redkale中缓存数据源的核心类。 主要供业务开发者使用, 技术开发者提供CacheSource的实现。<br>
|
||||||
@@ -1438,7 +1438,7 @@ public interface CacheSource extends Resourcable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
default <T> CompletableFuture<T> srandmemberAsync(String key, Type componentType) {
|
default <T> CompletableFuture<T> srandmemberAsync(String key, Type componentType) {
|
||||||
return srandmemberAsync(key, componentType, 1).thenApply(list -> list != null && !list.isEmpty() ? (T) list.get(0) : null);
|
return srandmemberAsync(key, componentType, 1).thenApply(list -> Utility.isNotEmpty(list) ? (T) list.get(0) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
default CompletableFuture<String> srandmemberStringAsync(String key) {
|
default CompletableFuture<String> srandmemberStringAsync(String key) {
|
||||||
|
|||||||
@@ -2491,7 +2491,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int nativeUpdate(String sql) {
|
public int nativeUpdate(String sql) {
|
||||||
return nativeUpdate(new String[]{sql})[0];
|
return nativeUpdates(new String[]{sql})[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2503,7 +2503,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
* @return 结果数组
|
* @return 结果数组
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int[] nativeUpdate(String... sqls) {
|
public int[] nativeUpdates(String... sqls) {
|
||||||
if (sqls.length == 0) {
|
if (sqls.length == 0) {
|
||||||
return new int[0];
|
return new int[0];
|
||||||
}
|
}
|
||||||
@@ -2571,6 +2571,16 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int nativeUpdate(String sql, Map<String, Object> params) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler, Map<String, Object> params) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public int directExecute(String sql) {
|
public int directExecute(String sql) {
|
||||||
return nativeUpdate(sql);
|
return nativeUpdate(sql);
|
||||||
@@ -2578,7 +2588,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public int[] directExecute(String... sqls) {
|
public int[] directExecute(String... sqls) {
|
||||||
return nativeUpdate(sqls);
|
return nativeUpdates(sqls);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public class DataMemorySource extends AbstractDataSqlSource implements SearchSou
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] nativeUpdate(String... sqls) {
|
public int[] nativeUpdates(String... sqls) {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,6 +108,16 @@ public class DataMemorySource extends AbstractDataSqlSource implements SearchSou
|
|||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int nativeUpdate(String sql, Map<String, Object> params) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler, Map<String, Object> params) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String prepareParamSign(int index) {
|
protected String prepareParamSign(int index) {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.source;
|
package org.redkale.source;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.*;
|
import java.util.function.*;
|
||||||
import static org.redkale.source.DataResultSet.formatColumnValue;
|
import static org.redkale.source.DataResultSet.formatColumnValue;
|
||||||
|
import org.redkale.util.Reproduce;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -19,9 +21,10 @@ import static org.redkale.source.DataResultSet.formatColumnValue;
|
|||||||
*/
|
*/
|
||||||
public interface DataSqlSource extends DataSource {
|
public interface DataSqlSource extends DataSource {
|
||||||
|
|
||||||
public int nativeUpdate(String sql);
|
public int[] nativeUpdates(String... sqls);
|
||||||
|
|
||||||
public int[] nativeUpdate(String... sqls);
|
//----------------------------- 无参数 -----------------------------
|
||||||
|
public int nativeUpdate(String sql);
|
||||||
|
|
||||||
//BiConsumer 参数1: connection, 参数2: statement
|
//BiConsumer 参数1: connection, 参数2: statement
|
||||||
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler);
|
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler);
|
||||||
@@ -35,7 +38,8 @@ public interface DataSqlSource extends DataSource {
|
|||||||
if (!rset.next()) {
|
if (!rset.next()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (type.isPrimitive() || type == byte[].class || (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
if (type == byte[].class || type == String.class || type.isPrimitive() || Number.class.isAssignableFrom(type)
|
||||||
|
|| (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
||||||
return (V) formatColumnValue(type, rset.getObject(1));
|
return (V) formatColumnValue(type, rset.getObject(1));
|
||||||
}
|
}
|
||||||
return EntityBuilder.load(type).getObjectValue(rset);
|
return EntityBuilder.load(type).getObjectValue(rset);
|
||||||
@@ -44,7 +48,8 @@ public interface DataSqlSource extends DataSource {
|
|||||||
|
|
||||||
default <V> List<V> nativeQueryList(Class<V> type, String sql) {
|
default <V> List<V> nativeQueryList(Class<V> type, String sql) {
|
||||||
return nativeQuery(sql, rset -> {
|
return nativeQuery(sql, rset -> {
|
||||||
if (type.isPrimitive() || type == byte[].class || (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
if (type == byte[].class || type == String.class || type.isPrimitive() || Number.class.isAssignableFrom(type)
|
||||||
|
|| (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
||||||
List<V> list = new ArrayList<>();
|
List<V> list = new ArrayList<>();
|
||||||
while (rset.next()) {
|
while (rset.next()) {
|
||||||
list.add(rset.wasNull() ? null : (V) formatColumnValue(type, rset.getObject(1)));
|
list.add(rset.wasNull() ? null : (V) formatColumnValue(type, rset.getObject(1)));
|
||||||
@@ -74,4 +79,90 @@ public interface DataSqlSource extends DataSource {
|
|||||||
default Map<Integer, String> nativeQueryIntStrMap(String sql) {
|
default Map<Integer, String> nativeQueryIntStrMap(String sql) {
|
||||||
return nativeQueryMap(Integer.class, String.class, sql);
|
return nativeQueryMap(Integer.class, String.class, sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------- Map<String, Object> -----------------------------
|
||||||
|
public int nativeUpdate(String sql, Map<String, Object> params);
|
||||||
|
|
||||||
|
//BiConsumer 参数1: connection, 参数2: statement
|
||||||
|
public <V> V nativeQuery(String sql, BiConsumer<Object, Object> consumer, Function<DataResultSet, V> handler, Map<String, Object> params);
|
||||||
|
|
||||||
|
default <V> V nativeQuery(String sql, Function<DataResultSet, V> handler, Map<String, Object> params) {
|
||||||
|
return nativeQuery(sql, null, handler, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
default <V> V nativeQueryOne(Class<V> type, String sql, Map<String, Object> params) {
|
||||||
|
return nativeQuery(sql, rset -> {
|
||||||
|
if (!rset.next()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (type == byte[].class || type == String.class || type.isPrimitive() || Number.class.isAssignableFrom(type)
|
||||||
|
|| (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
||||||
|
return (V) formatColumnValue(type, rset.getObject(1));
|
||||||
|
}
|
||||||
|
return EntityBuilder.load(type).getObjectValue(rset);
|
||||||
|
}, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
default <V> List<V> nativeQueryList(Class<V> type, String sql, Map<String, Object> params) {
|
||||||
|
return nativeQuery(sql, rset -> {
|
||||||
|
if (type == byte[].class || type == String.class || type.isPrimitive() || Number.class.isAssignableFrom(type)
|
||||||
|
|| (!Map.class.isAssignableFrom(type) && type.getName().startsWith("java."))) {
|
||||||
|
List<V> list = new ArrayList<>();
|
||||||
|
while (rset.next()) {
|
||||||
|
list.add(rset.wasNull() ? null : (V) formatColumnValue(type, rset.getObject(1)));
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
return EntityBuilder.load(type).getObjectList(rset);
|
||||||
|
}, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
default <K, V> Map<K, V> nativeQueryMap(Class<K> keyType, Class<V> valType, String sql, Map<String, Object> params) {
|
||||||
|
return nativeQuery(sql, rset -> {
|
||||||
|
Map<K, V> map = new LinkedHashMap<K, V>();
|
||||||
|
while (rset.next()) {
|
||||||
|
if (!rset.wasNull()) {
|
||||||
|
map.put((K) formatColumnValue(keyType, rset.getObject(1)), (V) formatColumnValue(valType, rset.getObject(2)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
default Map<String, String> nativeQueryStrStrMap(String sql, Map<String, Object> params) {
|
||||||
|
return nativeQueryMap(String.class, String.class, sql, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
default Map<Integer, String> nativeQueryIntStrMap(String sql, Map<String, Object> params) {
|
||||||
|
return nativeQueryMap(Integer.class, String.class, sql, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------- JavaBean -----------------------------
|
||||||
|
default int nativeUpdate(String sql, Serializable bean) {
|
||||||
|
return nativeUpdate(sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default <V> V nativeQuery(String sql, Function<DataResultSet, V> handler, Serializable bean) {
|
||||||
|
return nativeQuery(sql, null, handler, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default <V> V nativeQueryOne(Class<V> type, String sql, Serializable bean) {
|
||||||
|
return nativeQueryOne(type, sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default <V> List<V> nativeQueryList(Class<V> type, String sql, Serializable bean) {
|
||||||
|
return nativeQueryList(type, sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default <K, V> Map<K, V> nativeQueryMap(Class<K> keyType, Class<V> valType, String sql, Serializable bean) {
|
||||||
|
return nativeQueryMap(keyType, valType, sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default Map<String, String> nativeQueryStrStrMap(String sql, Serializable bean) {
|
||||||
|
return nativeQueryMap(String.class, String.class, sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
default Map<Integer, String> nativeQueryIntStrMap(String sql, Serializable bean) {
|
||||||
|
return nativeQueryMap(Integer.class, String.class, sql, (Map<String, Object>) Reproduce.copy(HashMap.class, bean));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -495,8 +495,8 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
}
|
}
|
||||||
if (express == FV_MOD || express == FV_DIV) {
|
if (express == FV_MOD || express == FV_DIV) {
|
||||||
FilterValue fv = (FilterValue) val0;
|
FilterValue fv = (FilterValue) val0;
|
||||||
return new StringBuilder().append(info.getSQLColumn(talis, column)).append(' ').append(express.value()).append(' ').append(fv.getFirst())
|
return new StringBuilder().append(info.getSQLColumn(talis, column)).append(' ').append(express.value()).append(' ').append(fv.getLeft())
|
||||||
.append(' ').append(fv.getExpress().value()).append(' ').append(fv.getSecond());
|
.append(' ').append(fv.getExpress().value()).append(' ').append(fv.getRight());
|
||||||
}
|
}
|
||||||
final boolean fk = (val0 instanceof FilterKey);
|
final boolean fk = (val0 instanceof FilterKey);
|
||||||
CharSequence val = fk ? info.getSQLColumn(talis, ((FilterKey) val0).getColumn()) : formatToString(express, info.getSQLValue(column, (Serializable) val0));
|
CharSequence val = fk ? info.getSQLColumn(talis, ((FilterKey) val0).getColumn()) : formatToString(express, info.getSQLValue(column, (Serializable) val0));
|
||||||
@@ -1132,12 +1132,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) == fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) == fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case NOTEQUAL:
|
case NOTEQUAL:
|
||||||
@@ -1145,12 +1145,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) != fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) != fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case GREATERTHAN:
|
case GREATERTHAN:
|
||||||
@@ -1158,12 +1158,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) > fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) > fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case LESSTHAN:
|
case LESSTHAN:
|
||||||
@@ -1171,12 +1171,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) < fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) < fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case GREATERTHANOREQUALTO:
|
case GREATERTHANOREQUALTO:
|
||||||
@@ -1184,12 +1184,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) >= fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) >= fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case LESSTHANOREQUALTO:
|
case LESSTHANOREQUALTO:
|
||||||
@@ -1197,12 +1197,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() % fv0.getFirst().longValue()) <= fv0.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() % fv0.getLeft().longValue()) <= fv0.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv0.getFirst() + " " + fv0.getExpress().value() + " " + fv0.getSecond();
|
return field + " " + express.value() + " " + fv0.getLeft() + " " + fv0.getExpress().value() + " " + fv0.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
default:
|
default:
|
||||||
@@ -1216,12 +1216,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) == fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) == fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case NOTEQUAL:
|
case NOTEQUAL:
|
||||||
@@ -1229,12 +1229,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) != fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) != fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case GREATERTHAN:
|
case GREATERTHAN:
|
||||||
@@ -1242,12 +1242,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) > fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) > fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case LESSTHAN:
|
case LESSTHAN:
|
||||||
@@ -1255,12 +1255,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) < fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) < fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case GREATERTHANOREQUALTO:
|
case GREATERTHANOREQUALTO:
|
||||||
@@ -1268,12 +1268,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) >= fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) >= fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
case LESSTHANOREQUALTO:
|
case LESSTHANOREQUALTO:
|
||||||
@@ -1281,12 +1281,12 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(T t) {
|
public boolean test(T t) {
|
||||||
return (((Number) attr.get(t)).longValue() / fv1.getFirst().longValue()) <= fv1.getSecond().longValue();
|
return (((Number) attr.get(t)).longValue() / fv1.getLeft().longValue()) <= fv1.getRight().longValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return field + " " + express.value() + " " + fv1.getFirst() + " " + fv1.getExpress().value() + " " + fv1.getSecond();
|
return field + " " + express.value() + " " + fv1.getLeft() + " " + fv1.getExpress().value() + " " + fv1.getRight();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -19,37 +19,37 @@ import org.redkale.convert.ConvertColumn;
|
|||||||
public class FilterValue implements java.io.Serializable {
|
public class FilterValue implements java.io.Serializable {
|
||||||
|
|
||||||
@ConvertColumn(index = 1)
|
@ConvertColumn(index = 1)
|
||||||
private Number first;
|
private Number left;
|
||||||
|
|
||||||
@ConvertColumn(index = 2)
|
@ConvertColumn(index = 2)
|
||||||
private FilterExpress express;
|
private FilterExpress express;
|
||||||
|
|
||||||
@ConvertColumn(index = 3)
|
@ConvertColumn(index = 3)
|
||||||
private Number second;
|
private Number right;
|
||||||
|
|
||||||
public FilterValue() {
|
public FilterValue() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterValue(Number first, Number second) {
|
public FilterValue(Number left, Number right) {
|
||||||
this(first, FilterExpress.EQUAL, second);
|
this(left, FilterExpress.EQUAL, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterValue(Number first, FilterExpress express) {
|
public FilterValue(Number left, FilterExpress express) {
|
||||||
this(first, express, 0);
|
this(left, express, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterValue(Number first, FilterExpress express, Number second) {
|
public FilterValue(Number left, FilterExpress express, Number right) {
|
||||||
this.first = first;
|
this.left = left;
|
||||||
this.express = express;
|
this.express = express;
|
||||||
this.second = second;
|
this.right = right;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Number getFirst() {
|
public Number getLeft() {
|
||||||
return first == null ? 0 : first;
|
return left == null ? 0 : left;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFirst(Number first) {
|
public void setLeft(Number left) {
|
||||||
this.first = first;
|
this.left = left;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterExpress getExpress() {
|
public FilterExpress getExpress() {
|
||||||
@@ -60,16 +60,16 @@ public class FilterValue implements java.io.Serializable {
|
|||||||
this.express = express;
|
this.express = express;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Number getSecond() {
|
public Number getRight() {
|
||||||
return second == null ? 0 : second;
|
return right == null ? 0 : right;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSecond(Number second) {
|
public void setRight(Number right) {
|
||||||
this.second = second;
|
this.right = right;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return FilterValue.class.getSimpleName() + "[first=" + getFirst() + ", express=" + getExpress() + ", second=" + getSecond() + "]";
|
return FilterValue.class.getSimpleName() + "[left=" + getLeft() + ", express=" + getExpress() + ", right=" + getRight() + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user