influxORM代码调整
This commit is contained in:
@@ -5,14 +5,13 @@ import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||
import com.njcn.influx.support.ICFunction;
|
||||
import com.njcn.influx.utils.LambdaUtil;
|
||||
import lombok.Data;
|
||||
import org.influxdb.annotation.Column;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
@@ -79,11 +78,13 @@ public class InfluxQueryWrapper {
|
||||
}
|
||||
|
||||
/***
|
||||
* 初始化查询语句:'select '
|
||||
* 初始化查询语句
|
||||
*/
|
||||
private void initSql() {
|
||||
this.selectColumns.clear();
|
||||
this.conditions.clear();
|
||||
this.groupColumn.clear();
|
||||
this.orderColumn.clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -93,14 +94,13 @@ public class InfluxQueryWrapper {
|
||||
* @param fieldsStr 属性值
|
||||
* 输出为 select ["influxColumn" as fieldStr]的形式
|
||||
*/
|
||||
public InfluxQueryWrapper select(String... fieldsStr) {
|
||||
public <T, R> InfluxQueryWrapper select(ICFunction<T, R>... fieldsStr) {
|
||||
if (ArrayUtil.isNotEmpty(fieldsStr)) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
Arrays.stream(fieldsStr).forEach(fieldStr -> {
|
||||
Field field = this.getTargetClassField(resultEntity, fieldStr);
|
||||
selectFragment.setLength(0);
|
||||
selectFragment.append(StrPool.C_SPACE)
|
||||
.append(this.getColumnName(field, fieldStr))
|
||||
.append(this.getColumnName(resultEntity, LambdaUtil.columnToString(fieldStr)))
|
||||
.append(StrPool.C_SPACE)
|
||||
.append(InfluxDbSqlConstant.AS)
|
||||
.append(StrPool.C_SPACE)
|
||||
@@ -135,11 +135,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出COUNT("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper count(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper count(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.COUNT +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName))+
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -154,11 +154,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出MEAN("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper mean(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper mean(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.AVG +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName))+
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -174,11 +174,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出MEDIAN("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper median(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper median(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.MEDIAN +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -193,11 +193,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出MODE("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper mode(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper mode(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.MODE +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -212,11 +212,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出SPREAD("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper spread(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper spread(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.SPREAD +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -231,11 +231,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出SUM("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper sum(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper sum(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.SUM +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -250,11 +250,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出TOP("columnName",number)
|
||||
*/
|
||||
public InfluxQueryWrapper top(String columnName, int num) {
|
||||
public <T, R> InfluxQueryWrapper top(ICFunction<T, R> columnName, int num) {
|
||||
String selectFragment = InfluxDbSqlConstant.TOP +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
StrPool.COMMA +
|
||||
num +
|
||||
@@ -271,11 +271,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出BOTTOM("columnName",number)
|
||||
*/
|
||||
public InfluxQueryWrapper bottom(String columnName, int num) {
|
||||
public <T, R> InfluxQueryWrapper bottom(ICFunction<T, R> columnName, int num) {
|
||||
String selectFragment = InfluxDbSqlConstant.BOTTOM +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
StrPool.COMMA +
|
||||
num +
|
||||
@@ -294,11 +294,11 @@ public class InfluxQueryWrapper {
|
||||
* 输出DERIVATIVE("columnName")
|
||||
*/
|
||||
@Deprecated
|
||||
public InfluxQueryWrapper derivative(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper derivative(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.DERIVATIVE +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -313,11 +313,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出LAST("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper last(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper last(ICFunction<T, R> columnName) {
|
||||
String selectFragment = InfluxDbSqlConstant.LAST +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS_VALUE;
|
||||
@@ -333,7 +333,7 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 MAX("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper max(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper max(ICFunction<T, R> columnName) {
|
||||
return max(columnName, "value");
|
||||
}
|
||||
|
||||
@@ -345,11 +345,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 MAX("columnName") as resultName
|
||||
*/
|
||||
public InfluxQueryWrapper max(String columnName, String resultName) {
|
||||
public <T, R> InfluxQueryWrapper max(ICFunction<T, R> columnName, String resultName) {
|
||||
String selectFragment = InfluxDbSqlConstant.MAX +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS +
|
||||
@@ -366,7 +366,7 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 MIN("columnName")
|
||||
*/
|
||||
public InfluxQueryWrapper min(String columnName) {
|
||||
public <T, R> InfluxQueryWrapper min(ICFunction<T, R> columnName) {
|
||||
return min(columnName, "value");
|
||||
}
|
||||
|
||||
@@ -378,11 +378,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 MIN("columnName") as resultName
|
||||
*/
|
||||
public InfluxQueryWrapper min(String columnName, String resultName) {
|
||||
public <T, R> InfluxQueryWrapper min(ICFunction<T, R> columnName, String resultName) {
|
||||
String selectFragment = InfluxDbSqlConstant.MIN +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
InfluxDbSqlConstant.RBK +
|
||||
InfluxDbSqlConstant.AS +
|
||||
@@ -400,7 +400,7 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 PERCENTILE("columnName",95)
|
||||
*/
|
||||
public InfluxQueryWrapper percentile(String columnName, int percent) {
|
||||
public <T, R> InfluxQueryWrapper percentile(ICFunction<T, R> columnName, int percent) {
|
||||
return percentile(columnName, "value", percent);
|
||||
}
|
||||
|
||||
@@ -413,11 +413,11 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 PERCENTILE("columnName",95) as resultName
|
||||
*/
|
||||
public InfluxQueryWrapper percentile(String columnName, String resultName, int percent) {
|
||||
public <T, R> InfluxQueryWrapper percentile(ICFunction<T, R> columnName, String resultName, int percent) {
|
||||
String selectFragment = InfluxDbSqlConstant.PERCENTILE +
|
||||
InfluxDbSqlConstant.LBK +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
columnName +
|
||||
this.getColumnName(measurement, LambdaUtil.columnToString(columnName)) +
|
||||
InfluxDbSqlConstant.DQM +
|
||||
StrPool.COMMA +
|
||||
percent +
|
||||
@@ -442,10 +442,9 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出为:time >='2022-04-30 16:00:00' AND time <='2022-05-30 16:00:00'
|
||||
*/
|
||||
public InfluxQueryWrapper between(String fieldName, Object val1, Object val2) {
|
||||
public <T, R> InfluxQueryWrapper between(ICFunction<T, R> fieldName, Object val1, Object val2) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
Field field = this.getTargetClassField(measurement, fieldName);
|
||||
String columnName = this.getColumnName(field, fieldName);
|
||||
String columnName = this.getColumnName(measurement, LambdaUtil.columnToString(fieldName));
|
||||
selectFragment.append(StrPool.C_SPACE)
|
||||
.append(columnName)
|
||||
.append(InfluxDbSqlConstant.GE);
|
||||
@@ -481,9 +480,9 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName = columnValue
|
||||
*/
|
||||
public InfluxQueryWrapper eq(String columnName, Object columnValue) {
|
||||
public <T, R> InfluxQueryWrapper eq(ICFunction<T, R> columnName, Object columnValue) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
selectFragment.append(columnName)
|
||||
selectFragment.append(this.getColumnName(measurement, LambdaUtil.columnToString(columnName)))
|
||||
.append(InfluxDbSqlConstant.EQ);
|
||||
if (columnValue instanceof String) {
|
||||
//需要用单引号包装下
|
||||
@@ -497,16 +496,18 @@ public class InfluxQueryWrapper {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* 指定字段大于某个值
|
||||
* @author hongawen
|
||||
* @param columnName 表字段名
|
||||
* @param fieldName 表字段名
|
||||
* @param columnValue 数值
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName > columnValue
|
||||
*/
|
||||
public InfluxQueryWrapper gt(String columnName, Object columnValue) {
|
||||
public <T, R> InfluxQueryWrapper gt(ICFunction<T, R> fieldName, Object columnValue) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
String columnName = this.getColumnName(measurement, LambdaUtil.columnToString(fieldName));
|
||||
selectFragment.append(columnName)
|
||||
.append(InfluxDbSqlConstant.GT);
|
||||
if (columnValue instanceof String) {
|
||||
@@ -524,13 +525,14 @@ public class InfluxQueryWrapper {
|
||||
/***
|
||||
* 指定字段大于等于某个值
|
||||
* @author hongawen
|
||||
* @param columnName 表字段名
|
||||
* @param fieldName 表字段名
|
||||
* @param columnValue 数值
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName >= columnValue
|
||||
*/
|
||||
public InfluxQueryWrapper ge(String columnName, Object columnValue) {
|
||||
public <T, R> InfluxQueryWrapper ge(ICFunction<T, R> fieldName, Object columnValue) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
String columnName = this.getColumnName(measurement, LambdaUtil.columnToString(fieldName));
|
||||
selectFragment.append(columnName)
|
||||
.append(InfluxDbSqlConstant.GE);
|
||||
if (columnValue instanceof String) {
|
||||
@@ -548,13 +550,14 @@ public class InfluxQueryWrapper {
|
||||
/***
|
||||
* 指定字段小于某个值
|
||||
* @author hongawen
|
||||
* @param columnName 表字段名
|
||||
* @param fieldName 表字段名
|
||||
* @param columnValue 数值
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName < columnValue
|
||||
*/
|
||||
public InfluxQueryWrapper lt(String columnName, Object columnValue) {
|
||||
public <T, R> InfluxQueryWrapper lt(ICFunction<T, R> fieldName, Object columnValue) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
String columnName = this.getColumnName(measurement, LambdaUtil.columnToString(fieldName));
|
||||
selectFragment.append(columnName)
|
||||
.append(InfluxDbSqlConstant.LT);
|
||||
if (columnValue instanceof String) {
|
||||
@@ -572,13 +575,14 @@ public class InfluxQueryWrapper {
|
||||
/***
|
||||
* 指定字段小于等于某个值
|
||||
* @author hongawen
|
||||
* @param columnName 表字段名
|
||||
* @param fieldName 表字段名
|
||||
* @param columnValue 数值
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName <= columnValue
|
||||
*/
|
||||
public InfluxQueryWrapper le(String columnName, Object columnValue) {
|
||||
public <T, R> InfluxQueryWrapper le(ICFunction<T, R> fieldName, Object columnValue) {
|
||||
StringBuilder selectFragment = new StringBuilder();
|
||||
String columnName = this.getColumnName(measurement, LambdaUtil.columnToString(fieldName));
|
||||
selectFragment.append(columnName)
|
||||
.append(InfluxDbSqlConstant.LE);
|
||||
if (columnValue instanceof String) {
|
||||
@@ -603,8 +607,8 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 columnName
|
||||
*/
|
||||
public InfluxQueryWrapper groupBy(String columnName) {
|
||||
groupColumn.add(columnName);
|
||||
public <T, R> InfluxQueryWrapper groupBy(ICFunction<T, R> columnName) {
|
||||
groupColumn.add(this.getColumnName(measurement, LambdaUtil.columnToString(columnName)));
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -627,7 +631,7 @@ public class InfluxQueryWrapper {
|
||||
* @return InfluxQueryWrapper
|
||||
* 输出 time asc
|
||||
*/
|
||||
public InfluxQueryWrapper timeAsc( ) {
|
||||
public InfluxQueryWrapper timeAsc() {
|
||||
String selectFragment = InfluxDbSqlConstant.TIME
|
||||
+ InfluxDbSqlConstant.ASC;
|
||||
orderColumn.add(selectFragment);
|
||||
@@ -703,11 +707,12 @@ public class InfluxQueryWrapper {
|
||||
/***
|
||||
* 获取sql拼接的名称,存在注解名就用注解名,否则就用属性名
|
||||
* @author hongawen
|
||||
* @param field 属性
|
||||
* @param clazz 类型
|
||||
* @param fieldName 属性名
|
||||
* @return String
|
||||
*/
|
||||
private String getColumnName(Field field, String fieldName) {
|
||||
private String getColumnName(Class<?> clazz, String fieldName) {
|
||||
Field field = this.getTargetClassField(clazz, fieldName);
|
||||
Column column = field.getAnnotation(Column.class);
|
||||
//数据库字段
|
||||
String influxColumn;
|
||||
|
||||
Reference in New Issue
Block a user