修复:通过方言动态添加 queryWrapper 条件,出现 No value specified for param 的错误, close #I7E7L8

This commit is contained in:
开源海哥 2023-06-17 12:17:34 +08:00
parent b7348561de
commit 95d5330937
2 changed files with 51 additions and 28 deletions

View File

@ -208,10 +208,10 @@ public class EntitySqlProvider {
CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
tableInfo.appendConditions(null, queryWrapper);
String sql = DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper);
ProviderUtil.setSqlArgs(params, CPI.getValueArray(queryWrapper));
return DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper);
return sql;
}
@ -269,12 +269,14 @@ public class EntitySqlProvider {
//处理逻辑删除 多租户等
tableInfo.appendConditions(entity, queryWrapper);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateEntityByQuery(tableInfo, entity, ignoreNulls, queryWrapper);
Object[] values = tableInfo.buildUpdateSqlArgs(entity, ignoreNulls, true);
Object[] queryParams = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, ArrayUtil.concat(values, queryParams));
return DialectFactory.getDialect().forUpdateEntityByQuery(tableInfo, entity, ignoreNulls, queryWrapper);
return sql;
}
/**
@ -296,11 +298,14 @@ public class EntitySqlProvider {
//处理逻辑删除 多租户等
tableInfo.appendConditions(null, queryWrapper);
Object[] queryParams = CPI.getValueArray(queryWrapper);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateNumberAddByQuery(tableInfo.getSchema()
, tableInfo.getTableName(), fieldName, value, queryWrapper);
Object[] queryParams = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, queryParams);
return DialectFactory.getDialect().forUpdateNumberAddByQuery(tableInfo.getSchema(), tableInfo.getTableName(), fieldName, value, queryWrapper);
return sql;
}
@ -372,10 +377,13 @@ public class EntitySqlProvider {
CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
}
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper);
return sql;
}
/**
@ -399,10 +407,13 @@ public class EntitySqlProvider {
CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
}
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper);
return sql;
}

View File

@ -60,14 +60,14 @@ public class RowSqlProvider {
*
* @param params
* @return sql
* @see RowMapper#insert(String,String, Row)
* @see RowMapper#insert(String, String, Row)
*/
public static String insert(Map params) {
String tableName = ProviderUtil.getTableName(params);
String schema = ProviderUtil.getSchemaName(params);
Row row = ProviderUtil.getRow(params);
ProviderUtil.setSqlArgs(params, RowCPI.obtainModifyValues(row));
return DialectFactory.getDialect().forInsertRow(schema,tableName, row);
return DialectFactory.getDialect().forInsertRow(schema, tableName, row);
}
/**
@ -98,7 +98,7 @@ public class RowSqlProvider {
ProviderUtil.setSqlArgs(params, values);
//sql: INSERT INTO `tb_table`(`name`, `sex`) VALUES (?, ?),(?, ?),(?, ?)
return DialectFactory.getDialect().forInsertBatchWithFirstRowColumns(schema,tableName, rows);
return DialectFactory.getDialect().forInsertBatchWithFirstRowColumns(schema, tableName, rows);
}
/**
@ -106,7 +106,7 @@ public class RowSqlProvider {
*
* @param params
* @return sql
* @see RowMapper#deleteById(String,String, String, Object)
* @see RowMapper#deleteById(String, String, String, Object)
*/
public static String deleteById(Map params) {
String schema = ProviderUtil.getSchemaName(params);
@ -146,18 +146,21 @@ public class RowSqlProvider {
*
* @param params
* @return sql
* @see RowMapper#deleteByQuery(String,String, QueryWrapper)
* @see RowMapper#deleteByQuery(String, String, QueryWrapper)
*/
public static String deleteByQuery(Map params) {
String schema = ProviderUtil.getSchemaName(params);
String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(params);
CPI.setFromIfNecessary(queryWrapper, schema,tableName);
CPI.setFromIfNecessary(queryWrapper, schema, tableName);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forDeleteByQuery(queryWrapper);
Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray);
return DialectFactory.getDialect().forDeleteByQuery(queryWrapper);
return sql;
}
/**
@ -189,14 +192,17 @@ public class RowSqlProvider {
Row data = ProviderUtil.getRow(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(params);
CPI.setFromIfNecessary(queryWrapper,schema, tableName);
CPI.setFromIfNecessary(queryWrapper, schema, tableName);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateByQuery(queryWrapper, data);
Object[] modifyValues = RowCPI.obtainModifyValues(data);
Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, ArrayUtil.concat(modifyValues, valueArray));
return DialectFactory.getDialect().forUpdateByQuery(queryWrapper, data);
return sql;
}
@ -221,7 +227,7 @@ public class RowSqlProvider {
values = ArrayUtil.concat(values, RowCPI.obtainAllModifyValues(row));
}
ProviderUtil.setSqlArgs(params, values);
return DialectFactory.getDialect().forUpdateBatchById(schema,tableName, rows);
return DialectFactory.getDialect().forUpdateBatchById(schema, tableName, rows);
}
/**
@ -269,12 +275,13 @@ public class RowSqlProvider {
String fieldName = ProviderUtil.getFieldName(params);
Number value = (Number) ProviderUtil.getValue(params);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateNumberAddByQuery(schema
, tableName, fieldName, value, queryWrapper);
Object[] queryParams = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, queryParams);
return DialectFactory.getDialect().forUpdateNumberAddByQuery(schema, tableName, fieldName, value, queryWrapper);
return sql;
}
@ -293,7 +300,7 @@ public class RowSqlProvider {
ProviderUtil.setSqlArgs(params, primaryValues);
return DialectFactory.getDialect().forSelectOneById(schema,tableName, primaryKeys, primaryValues);
return DialectFactory.getDialect().forSelectOneById(schema, tableName, primaryKeys, primaryValues);
}
@ -308,13 +315,15 @@ public class RowSqlProvider {
String schema = ProviderUtil.getSchemaName(params);
String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(params);
CPI.setFromIfNecessary(queryWrapper,schema, tableName);
CPI.setFromIfNecessary(queryWrapper, schema, tableName);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper);
return sql;
}
/**
@ -329,12 +338,15 @@ public class RowSqlProvider {
String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(params);
CPI.setFromIfNecessary(queryWrapper,schema,tableName);
CPI.setFromIfNecessary(queryWrapper, schema, tableName);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper);
return sql;
}