optimize: The table name of QueryWrapper takes precedence over the default of baseMapper

This commit is contained in:
开源海哥 2023-03-16 10:47:08 +08:00
parent b0c79dac0b
commit b9a152c582
2 changed files with 21 additions and 10 deletions

View File

@ -34,13 +34,12 @@ import java.util.Map;
public class EntitySqlProvider { public class EntitySqlProvider {
/** /**
* 不让实例化使用静态方法的模式效率更高非静态方法每次都会实例化当前类 * 不让实例化使用静态方法的模式效率更高非静态方法每次都会实例化当前类
* 参考源码: {{@link org.apache.ibatis.builder.annotation.ProviderSqlSource#getBoundSql(Object)} * 参考源码: {{@link org.apache.ibatis.builder.annotation.ProviderSqlSource#getBoundSql(Object)}
*/ */
private EntitySqlProvider() { private EntitySqlProvider() {}
}
/** /**
* insert sql 构建 * insert sql 构建
@ -72,7 +71,7 @@ public class EntitySqlProvider {
/** /**
* insertBatchWithFirstEntityColumns sql 构建 * insertBatch sql 构建
* *
* @param params * @param params
* @param context * @param context
@ -92,12 +91,13 @@ public class EntitySqlProvider {
tableInfo.initLogicDeleteValueIfNecessary(entity); tableInfo.initLogicDeleteValueIfNecessary(entity);
} }
Object[] values = new Object[0];
Object[] allValues = new Object[0];
for (Object entity : entities) { for (Object entity : entities) {
values = ArrayUtil.concat(values, tableInfo.buildInsertSqlArgs(entity)); allValues = ArrayUtil.concat(allValues, tableInfo.buildInsertSqlArgs(entity));
} }
ProviderUtil.setSqlArgs(params, values); ProviderUtil.setSqlArgs(params, allValues);
return DialectFactory.getDialect().forInsertEntityBatch(tableInfo, entities); return DialectFactory.getDialect().forInsertEntityBatch(tableInfo, entities);
} }
@ -162,7 +162,9 @@ public class EntitySqlProvider {
ProviderUtil.setSqlArgs(params, CPI.getValueArray(queryWrapper)); ProviderUtil.setSqlArgs(params, CPI.getValueArray(queryWrapper));
TableInfo tableInfo = ProviderUtil.getTableInfo(context); TableInfo tableInfo = ProviderUtil.getTableInfo(context);
queryWrapper.from(tableInfo.getTableName());
// queryWrapper.from(tableInfo.getTableName());
CPI.setFromIfNecessary(queryWrapper,tableInfo.getTableName());
return DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper); return DialectFactory.getDialect().forDeleteEntityBatchByQuery(tableInfo, queryWrapper);
} }
@ -294,7 +296,8 @@ public class EntitySqlProvider {
Object[] values = CPI.getValueArray(queryWrapper); Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values); ProviderUtil.setSqlArgs(params, values);
queryWrapper.from(tableInfo.getTableName()); // queryWrapper.from(tableInfo.getTableName());
CPI.setFromIfNecessary(queryWrapper,tableInfo.getTableName());
return DialectFactory.getDialect().forSelectListByQuery(queryWrapper); return DialectFactory.getDialect().forSelectListByQuery(queryWrapper);
} }
@ -324,7 +327,8 @@ public class EntitySqlProvider {
Object[] values = CPI.getValueArray(queryWrapper); Object[] values = CPI.getValueArray(queryWrapper);
ProviderUtil.setSqlArgs(params, values); ProviderUtil.setSqlArgs(params, values);
queryWrapper.from(tableInfo.getTableName()); // queryWrapper.from(tableInfo.getTableName());
CPI.setFromIfNecessary(queryWrapper,tableInfo.getTableName());
return DialectFactory.getDialect().forSelectCountByQuery(queryWrapper); return DialectFactory.getDialect().forSelectCountByQuery(queryWrapper);
} }

View File

@ -16,6 +16,7 @@
package com.mybatisflex.core.query; package com.mybatisflex.core.query;
import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.IDialect;
import com.mybatisflex.core.util.CollectionUtil;
import java.util.List; import java.util.List;
@ -127,4 +128,10 @@ public class CPI {
public static String toSelectSql(QueryColumn queryColumn,List<QueryTable> queryTables, IDialect dialect) { public static String toSelectSql(QueryColumn queryColumn,List<QueryTable> queryTables, IDialect dialect) {
return queryColumn.toSelectSql(queryTables,dialect); return queryColumn.toSelectSql(queryTables,dialect);
} }
public static void setFromIfNecessary(QueryWrapper queryWrapper,String tableName){
if (CollectionUtil.isEmpty(queryWrapper.getQueryTables())){
queryWrapper.from(tableName);
}
}
} }