diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java index 18383cf8..d82d12f2 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java @@ -376,6 +376,23 @@ public class QueryWrapper extends BaseQueryWrapper { */ Object[] getValueArray() { + List columnValues = null; + List selectColumns = getSelectColumns(); + if (CollectionUtil.isNotEmpty(selectColumns)){ + for (QueryColumn selectColumn : selectColumns) { + if (selectColumn instanceof SelectQueryColumn){ + QueryWrapper queryWrapper = ((SelectQueryColumn) selectColumn).getQueryWrapper(); + Object[] valueArray = queryWrapper.getValueArray(); + if (ArrayUtil.isNotEmpty(valueArray)){ + if (columnValues == null){ + columnValues = new ArrayList<>(); + } + columnValues.addAll(Arrays.asList(valueArray)); + } + } + } + } + //select 子查询的参数:select * from (select ....) List tableValues = null; List queryTables = getQueryTables(); @@ -431,7 +448,8 @@ public class QueryWrapper extends BaseQueryWrapper { } } - Object[] returnValues = tableValues == null ? WrapperUtil.NULL_PARA_ARRAY : tableValues.toArray(); + Object[] returnValues = columnValues == null ? WrapperUtil.NULL_PARA_ARRAY : columnValues.toArray(); + returnValues = tableValues != null ? ArrayUtil.concat(returnValues,tableValues.toArray()) : returnValues; returnValues = joinValues != null ? ArrayUtil.concat(returnValues, joinValues.toArray()) : returnValues; returnValues = ArrayUtil.concat(returnValues, paramValues); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryColumn.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryColumn.java index 8b4a32f2..aeb26889 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryColumn.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryColumn.java @@ -37,6 +37,10 @@ public class SelectQueryColumn extends QueryColumn { return this; } + QueryWrapper getQueryWrapper() { + return queryWrapper; + } + @Override String toSelectSql(List queryTables, IDialect dialect) { String selectSql = dialect.forSelectByQuery(queryWrapper);