修复:通过方言动态添加 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()); CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
tableInfo.appendConditions(null, queryWrapper); tableInfo.appendConditions(null, queryWrapper);
String sql = DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper);
ProviderUtil.setSqlArgs(params, CPI.getValueArray(queryWrapper)); ProviderUtil.setSqlArgs(params, CPI.getValueArray(queryWrapper));
return sql;
return DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper);
} }
@ -269,12 +269,14 @@ public class EntitySqlProvider {
//处理逻辑删除 多租户等 //处理逻辑删除 多租户等
tableInfo.appendConditions(entity, queryWrapper); tableInfo.appendConditions(entity, queryWrapper);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateEntityByQuery(tableInfo, entity, ignoreNulls, queryWrapper);
Object[] values = tableInfo.buildUpdateSqlArgs(entity, ignoreNulls, true); Object[] values = tableInfo.buildUpdateSqlArgs(entity, ignoreNulls, true);
Object[] queryParams = CPI.getValueArray(queryWrapper); Object[] queryParams = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, ArrayUtil.concat(values, queryParams)); 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); 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); 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()); CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
} }
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] values = CPI.getValueArray(queryWrapper); Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values); 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()); CPI.setFromIfNecessary(queryWrapper, tableInfo.getSchema(), tableInfo.getTableName());
} }
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forSelectByQuery(queryWrapper);
Object[] values = CPI.getValueArray(queryWrapper); Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values); ProviderUtil.setSqlArgs(params, values);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper); return sql;
} }

View File

@ -60,14 +60,14 @@ public class RowSqlProvider {
* *
* @param params * @param params
* @return sql * @return sql
* @see RowMapper#insert(String,String, Row) * @see RowMapper#insert(String, String, Row)
*/ */
public static String insert(Map params) { public static String insert(Map params) {
String tableName = ProviderUtil.getTableName(params); String tableName = ProviderUtil.getTableName(params);
String schema = ProviderUtil.getSchemaName(params); String schema = ProviderUtil.getSchemaName(params);
Row row = ProviderUtil.getRow(params); Row row = ProviderUtil.getRow(params);
ProviderUtil.setSqlArgs(params, RowCPI.obtainModifyValues(row)); 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); ProviderUtil.setSqlArgs(params, values);
//sql: INSERT INTO `tb_table`(`name`, `sex`) 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 * @param params
* @return sql * @return sql
* @see RowMapper#deleteById(String,String, String, Object) * @see RowMapper#deleteById(String, String, String, Object)
*/ */
public static String deleteById(Map params) { public static String deleteById(Map params) {
String schema = ProviderUtil.getSchemaName(params); String schema = ProviderUtil.getSchemaName(params);
@ -146,18 +146,21 @@ public class RowSqlProvider {
* *
* @param params * @param params
* @return sql * @return sql
* @see RowMapper#deleteByQuery(String,String, QueryWrapper) * @see RowMapper#deleteByQuery(String, String, QueryWrapper)
*/ */
public static String deleteByQuery(Map params) { public static String deleteByQuery(Map params) {
String schema = ProviderUtil.getSchemaName(params); String schema = ProviderUtil.getSchemaName(params);
String tableName = ProviderUtil.getTableName(params); String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(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); Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray); ProviderUtil.setSqlArgs(params, valueArray);
return DialectFactory.getDialect().forDeleteByQuery(queryWrapper); return sql;
} }
/** /**
@ -189,14 +192,17 @@ public class RowSqlProvider {
Row data = ProviderUtil.getRow(params); Row data = ProviderUtil.getRow(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(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[] modifyValues = RowCPI.obtainModifyValues(data);
Object[] valueArray = CPI.getValueArray(queryWrapper); Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, ArrayUtil.concat(modifyValues, valueArray)); 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)); values = ArrayUtil.concat(values, RowCPI.obtainAllModifyValues(row));
} }
ProviderUtil.setSqlArgs(params, values); 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); String fieldName = ProviderUtil.getFieldName(params);
Number value = (Number) ProviderUtil.getValue(params); Number value = (Number) ProviderUtil.getValue(params);
//优先构建 sql再构建参数
String sql = DialectFactory.getDialect().forUpdateNumberAddByQuery(schema
, tableName, fieldName, value, queryWrapper);
Object[] queryParams = CPI.getValueArray(queryWrapper); Object[] queryParams = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, queryParams); ProviderUtil.setSqlArgs(params, queryParams);
return sql;
return DialectFactory.getDialect().forUpdateNumberAddByQuery(schema, tableName, fieldName, value, queryWrapper);
} }
@ -293,7 +300,7 @@ public class RowSqlProvider {
ProviderUtil.setSqlArgs(params, primaryValues); 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 schema = ProviderUtil.getSchemaName(params);
String tableName = ProviderUtil.getTableName(params); String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(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); Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray); ProviderUtil.setSqlArgs(params, valueArray);
return sql;
return DialectFactory.getDialect().forSelectByQuery(queryWrapper);
} }
/** /**
@ -329,12 +338,15 @@ public class RowSqlProvider {
String tableName = ProviderUtil.getTableName(params); String tableName = ProviderUtil.getTableName(params);
QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(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); Object[] valueArray = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, valueArray); ProviderUtil.setSqlArgs(params, valueArray);
return DialectFactory.getDialect().forSelectByQuery(queryWrapper); return sql;
} }