添加自定义注解判断是否因为数据为空时过滤当前记录
This commit is contained in:
22
src/main/java/com/njcn/influx/ano/IgnoreData.java
Normal file
22
src/main/java/com/njcn/influx/ano/IgnoreData.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package com.njcn.influx.ano;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 判断为空时,是否取消存储该条记录
|
||||
* @author hongawen
|
||||
*/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface IgnoreData {
|
||||
|
||||
/**
|
||||
* 用于传参
|
||||
* @return boolean 参数内容
|
||||
*/
|
||||
boolean value();
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.njcn.influx.core;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.njcn.influx.ano.IgnoreData;
|
||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||
import com.njcn.influx.utils.InstantUtil;
|
||||
@@ -75,21 +76,26 @@ public class InfluxExecutor {
|
||||
if (columnName.equalsIgnoreCase(InfluxQueryWrapper.getColumnName(declaredField))) {
|
||||
//获取属性定义的类型
|
||||
declaredField.setAccessible(true);
|
||||
//判断是否过滤该条记录,当数据返回 null时
|
||||
IgnoreData ignoreAnnotation = declaredField.getAnnotation(IgnoreData.class);
|
||||
if (Objects.nonNull(ignoreAnnotation) && ignoreAnnotation.value() && Objects.isNull(tags.get(columnName))) {
|
||||
continue;
|
||||
}
|
||||
//时间格式
|
||||
if (declaredField.getType() == Instant.class) {
|
||||
declaredField.set(obj, InstantUtil.stringToInstant(tags.get(columnName).toString().replace("+08:00", "Z")));
|
||||
declaredField.set(obj, InstantUtil.stringToInstant(tags.get(columnName).replace("+08:00", "Z")));
|
||||
//字符串
|
||||
} else if (declaredField.getType() == String.class) {
|
||||
declaredField.set(obj, tags.get(columnName).toString());
|
||||
declaredField.set(obj, tags.get(columnName));
|
||||
//浮点双精度
|
||||
} else if (declaredField.getType() == Double.class) {
|
||||
declaredField.set(obj, Double.parseDouble(tags.get(columnName).toString()));
|
||||
declaredField.set(obj, Double.parseDouble(tags.get(columnName)));
|
||||
//浮点
|
||||
} else if (declaredField.getType() == Float.class) {
|
||||
declaredField.set(obj, Float.parseFloat(tags.get(columnName).toString()));
|
||||
declaredField.set(obj, Float.parseFloat(tags.get(columnName)));
|
||||
//整型
|
||||
} else if (declaredField.getType() == Integer.class) {
|
||||
declaredField.set(obj, Integer.parseInt(tags.get(columnName).toString()));
|
||||
declaredField.set(obj, Integer.parseInt(tags.get(columnName)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,6 +113,12 @@ public class InfluxExecutor {
|
||||
if (columnName.equalsIgnoreCase(InfluxQueryWrapper.getColumnName(declaredField))) {
|
||||
//获取属性定义的类型
|
||||
declaredField.setAccessible(true);
|
||||
//判断是否过滤该条记录,当数据返回 null时
|
||||
IgnoreData ignoreAnnotation = declaredField.getAnnotation(IgnoreData.class);
|
||||
if (Objects.nonNull(ignoreAnnotation) && ignoreAnnotation.value() && Objects.isNull(columnValue.get(i))) {
|
||||
object = null;
|
||||
continue;
|
||||
}
|
||||
//时间格式
|
||||
if (declaredField.getType() == Instant.class) {
|
||||
declaredField.set(object, InstantUtil.stringToInstant(columnValue.get(i).toString().replace("+08:00", "Z")));
|
||||
@@ -126,6 +138,7 @@ public class InfluxExecutor {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(object)) {
|
||||
results.add((E) object);
|
||||
}
|
||||
}
|
||||
@@ -133,6 +146,7 @@ public class InfluxExecutor {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("influx反射实例化实体异常:" + e);
|
||||
}
|
||||
|
||||
@@ -29,12 +29,17 @@ public class ParameterHandler {
|
||||
}
|
||||
|
||||
if (parameterType == String.class) {
|
||||
if (!args[i].toString().contains("select") && !args[i].toString().contains("SELECT")) {
|
||||
sql = sql.replaceAll("\\#\\{" + parameterName + "\\}", "'" + args[i] + "'");
|
||||
sql = sql.replaceAll("\\$\\{" + parameterName + "\\}", args[i].toString());
|
||||
}else{
|
||||
sql = sql.replaceAll("\\#\\{" + parameterName + "\\}", args[i].toString());
|
||||
sql = sql.replaceAll("\\$\\{" + parameterName + "\\}", args[i].toString());
|
||||
}
|
||||
} else {
|
||||
sql = sql.replaceAll("\\#\\{" + parameterName + "\\}", args[i].toString());
|
||||
sql = sql.replaceAll("\\$\\{" + parameterName + "\\}", args[i].toString());
|
||||
}
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user