fixed: sql "select * ,(select ...) as ..." 第二个 select 有参数时出错的问题

This commit is contained in:
开源海哥 2023-05-22 15:22:11 +08:00
parent 105d2fcf56
commit 0c0d1e2648
2 changed files with 23 additions and 1 deletions

View File

@ -376,6 +376,23 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
*/
Object[] getValueArray() {
List<Object> columnValues = null;
List<QueryColumn> 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<Object> tableValues = null;
List<QueryTable> queryTables = getQueryTables();
@ -431,7 +448,8 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
}
}
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);

View File

@ -37,6 +37,10 @@ public class SelectQueryColumn extends QueryColumn {
return this;
}
QueryWrapper getQueryWrapper() {
return queryWrapper;
}
@Override
String toSelectSql(List<QueryTable> queryTables, IDialect dialect) {
String selectSql = dialect.forSelectByQuery(queryWrapper);