optimize QueryColumn.as() method

This commit is contained in:
开源海哥 2023-07-02 09:43:42 +08:00
parent efcc9dbf1a
commit 9729772302
11 changed files with 29 additions and 62 deletions

View File

@ -22,7 +22,6 @@ import java.io.Serializable;
public class FieldQuery implements Serializable { public class FieldQuery implements Serializable {
private String field; private String field;
// private Class<?> mappingType;
private QueryWrapper queryWrapper; private QueryWrapper queryWrapper;
public String getField() { public String getField() {
@ -33,14 +32,6 @@ public class FieldQuery implements Serializable {
this.field = field; this.field = field;
} }
// public Class<?> getMappingType() {
// return mappingType;
// }
//
// public void setMappingType(Class<?> mappingType) {
// this.mappingType = mappingType;
// }
public QueryWrapper getQueryWrapper() { public QueryWrapper getQueryWrapper() {
return queryWrapper; return queryWrapper;
} }

View File

@ -38,11 +38,6 @@ public class FieldQueryBuilder<T> implements Serializable {
return field(LambdaUtil.getFieldName(fn)); return field(LambdaUtil.getFieldName(fn));
} }
// public FieldQueryBuilder<T> type(Class<?> mappingType){
// fieldQuery.setMappingType(mappingType);
// return this;
// }
public FieldQueryBuilder<T> queryWrapper(QueryBuilder<T> fun){ public FieldQueryBuilder<T> queryWrapper(QueryBuilder<T> fun){
fieldQuery.setQueryWrapper(fun.build(entity)); fieldQuery.setQueryWrapper(fun.build(entity));
return this; return this;

View File

@ -83,11 +83,6 @@ public class ArithmeticQueryColumn extends QueryColumn {
return this; return this;
} }
@Override
public QueryColumn as(String alias) {
this.alias = alias;
return this;
}
@Override @Override
String toSelectSql(List<QueryTable> queryTables, IDialect dialect) { String toSelectSql(List<QueryTable> queryTables, IDialect dialect) {

View File

@ -77,12 +77,6 @@ public class CaseQueryColumn extends QueryColumn implements HasParamsColumn {
return sql.toString(); return sql.toString();
} }
@Override
public QueryColumn as(String alias) {
this.alias = alias;
return this;
}
@Override @Override
public Object[] getParamValues() { public Object[] getParamValues() {
Object[] values = FlexConsts.EMPTY_ARRAY; Object[] values = FlexConsts.EMPTY_ARRAY;

View File

@ -79,12 +79,6 @@ public class CaseSearchQueryColumn extends QueryColumn implements HasParamsColum
whens.add(when); whens.add(when);
} }
@Override
public QueryColumn as(String alias) {
this.alias = alias;
return this;
}
@Override @Override
public Object[] getParamValues() { public Object[] getParamValues() {

View File

@ -132,12 +132,7 @@ public class FunctionQueryColumn extends QueryColumn implements HasParamsColumn
return sql; return sql;
} }
@Override
public QueryColumn as(String alias) {
SqlUtil.keepColumnSafely(alias);
this.alias = alias;
return this;
}
@Override @Override
public String toString() { public String toString() {

View File

@ -35,6 +35,8 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
protected String name; protected String name;
protected String alias; protected String alias;
private boolean returnCopyByAsMethod = false;
public QueryColumn() { public QueryColumn() {
} }
@ -56,8 +58,15 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
this.name = name; this.name = name;
} }
public QueryColumn(QueryTable queryTable, String name) {
SqlUtil.keepColumnSafely(name);
this.table = queryTable;
this.name = name;
}
public QueryColumn(TableDef tableDef, String name) { public QueryColumn(TableDef tableDef, String name) {
SqlUtil.keepColumnSafely(name); SqlUtil.keepColumnSafely(name);
this.returnCopyByAsMethod = true;
this.table = new QueryTable(tableDef); this.table = new QueryTable(tableDef);
this.name = name; this.name = name;
} }
@ -67,12 +76,6 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
this.alias = alias; this.alias = alias;
} }
public QueryColumn(QueryTable queryTable, String name) {
SqlUtil.keepColumnSafely(name);
this.table = queryTable;
this.name = name;
}
public QueryTable getTable() { public QueryTable getTable() {
return table; return table;
@ -99,16 +102,21 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
} }
public <T> QueryColumn as(LambdaGetter<T> fn) { public <T> QueryColumn as(LambdaGetter<T> fn) {
return as(LambdaUtil.getFieldName(fn)); return as(LambdaUtil.getAsName(fn));
} }
public QueryColumn as(String alias) { public QueryColumn as(String alias) {
SqlUtil.keepColumnSafely(alias); SqlUtil.keepColumnSafely(alias);
QueryColumn newColumn = new QueryColumn(); if (returnCopyByAsMethod) {
newColumn.table = this.table; QueryColumn newColumn = new QueryColumn();
newColumn.name = this.name; newColumn.table = this.table;
newColumn.alias = alias; newColumn.name = this.name;
return newColumn; newColumn.alias = alias;
return newColumn;
} else {
this.alias = alias;
return this;
}
} }

View File

@ -17,7 +17,6 @@ package com.mybatisflex.core.query;
import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.util.ObjectUtil; import com.mybatisflex.core.util.ObjectUtil;
import com.mybatisflex.core.util.SqlUtil;
import com.mybatisflex.core.util.StringUtil; import com.mybatisflex.core.util.StringUtil;
import java.util.List; import java.util.List;
@ -30,12 +29,6 @@ public class SelectQueryColumn extends QueryColumn implements HasParamsColumn {
this.queryWrapper = queryWrapper; this.queryWrapper = queryWrapper;
} }
@Override
public SelectQueryColumn as(String alias) {
SqlUtil.keepColumnSafely(alias);
this.alias = alias;
return this;
}
QueryWrapper getQueryWrapper() { QueryWrapper getQueryWrapper() {
return queryWrapper; return queryWrapper;

View File

@ -77,12 +77,6 @@ public class StringFunctionQueryColumn extends QueryColumn {
return fnName + WrapperUtil.withBracket(sql); return fnName + WrapperUtil.withBracket(sql);
} }
@Override
public QueryColumn as(String alias) {
SqlUtil.keepColumnSafely(alias);
this.alias = alias;
return this;
}
@Override @Override
public String toString() { public String toString() {

View File

@ -43,6 +43,13 @@ public class LambdaUtil {
} }
public static <T> String getAsName(LambdaGetter<T> getter) {
QueryColumn queryColumn = getQueryColumn(getter);
return queryColumn.getAlias();
}
public static <T> QueryColumn getQueryColumn(LambdaGetter<T> getter) { public static <T> QueryColumn getQueryColumn(LambdaGetter<T> getter) {
SerializedLambda lambda = getSerializedLambda(getter); SerializedLambda lambda = getSerializedLambda(getter);
String methodName = lambda.getImplMethodName(); String methodName = lambda.getImplMethodName();

View File

@ -22,6 +22,7 @@ public class Account extends BaseEntity implements Serializable, AgeAware {
@ColumnMask(Masks.CHINESE_NAME) @ColumnMask(Masks.CHINESE_NAME)
private String userName; private String userName;
@As("my_age")
private int age; private int age;
@NotBlank @NotBlank