Skip to content

Commit cb89137

Browse files
committed
Merge remote-tracking branch 'origin/master' into 4.2.0
2 parents 2e34aea + 99a2dd3 commit cb89137

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

hsweb-easy-orm-rdb/src/main/java/org/hswebframework/ezorm/rdb/operator/builder/fragments/query/QueryTermsFragmentBuilder.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.hswebframework.ezorm.rdb.operator.builder.fragments.query;
22

3+
import org.apache.commons.collections4.CollectionUtils;
34
import org.hswebframework.ezorm.core.param.Term;
45
import org.hswebframework.ezorm.rdb.metadata.RDBColumnMetadata;
56
import org.hswebframework.ezorm.rdb.metadata.TableOrViewMetadata;
@@ -12,6 +13,7 @@
1213
import org.hswebframework.ezorm.rdb.operator.dml.Join;
1314
import org.hswebframework.ezorm.rdb.operator.dml.query.QueryOperatorParameter;
1415
import org.hswebframework.ezorm.rdb.operator.dml.query.SelectColumn;
16+
import org.hswebframework.ezorm.rdb.utils.FlatList;
1517

1618
import java.util.*;
1719

@@ -97,10 +99,13 @@ protected SqlFragments createTermFragments(QueryOperatorParameter parameter, Ter
9799
if (column != null) {
98100
return createByColumn(column, parameter.getFromAlias(), term);
99101
}
100-
String cname = columnName;
101102

103+
List<SelectColumn> cols = parameter.getSelect();
104+
if (CollectionUtils.isNotEmpty(parameter.getAlias())) {
105+
cols = new FlatList<>(Arrays.asList(cols, parameter.getAlias()));
106+
}
102107
//匹配查询的列别名
103-
for (SelectColumn selectColumn : parameter.getSelect()) {
108+
for (SelectColumn selectColumn : cols) {
104109
if (Objects.equals(selectColumn.getAlias(), columnName)) {
105110
String selectColumnName = selectColumn.getColumn();
106111
//join
@@ -113,6 +118,7 @@ protected SqlFragments createTermFragments(QueryOperatorParameter parameter, Ter
113118
}
114119
}
115120
}
121+
String cname = columnName;
116122

117123
//匹配join
118124
for (Join join : parameter.getJoins()) {

hsweb-easy-orm-rdb/src/main/java/org/hswebframework/ezorm/rdb/operator/dml/query/QueryOperatorParameter.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ public class QueryOperatorParameter {
1414

1515
private List<SelectColumn> select = new ArrayList<>();
1616

17+
/**
18+
* 别名,用于标识可使用的条件别名对应的列信息.
19+
*
20+
* @since 4.1.4
21+
*/
22+
private List<SelectColumn> alias = new ArrayList<>();
23+
1724
private Set<String> selectExcludes = new HashSet<>();
1825

1926
private String from;
@@ -38,12 +45,16 @@ public class QueryOperatorParameter {
3845

3946
private Map<String, Object> context;
4047

48+
public QueryOperatorParameter() {
49+
}
50+
4151
public Optional<Join> findJoin(String targetName) {
42-
return Optional.ofNullable(joins)
43-
.flatMap(_joins -> _joins
44-
.stream()
45-
.filter(join -> join.equalsTargetOrAlias(targetName))
46-
.findFirst());
52+
return Optional
53+
.ofNullable(joins)
54+
.flatMap(_joins -> _joins
55+
.stream()
56+
.filter(join -> join.equalsTargetOrAlias(targetName))
57+
.findFirst());
4758
}
4859

4960
public String getFromAlias() {
@@ -57,12 +68,13 @@ public String getFromAlias() {
5768
@Override
5869
@SuppressWarnings("all")
5970
@SneakyThrows
60-
public QueryOperatorParameter clone(){
71+
public QueryOperatorParameter clone() {
6172
QueryOperatorParameter parameter = new QueryOperatorParameter();
6273
parameter.select.addAll(this.select);
6374
parameter.selectExcludes.addAll(this.selectExcludes);
6475
parameter.from = this.from;
6576
parameter.fromAlias = this.fromAlias;
77+
parameter.alias.addAll(this.alias);
6678
parameter.where.addAll(this.where);
6779
parameter.joins.addAll(this.joins);
6880
parameter.orderBy.addAll(this.orderBy);

0 commit comments

Comments
 (0)