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

View File

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