From 9fcf4e20eab2c6b51e527655c3b495d4eb3d93d2 Mon Sep 17 00:00:00 2001 From: Michael Yang Date: Sun, 11 Aug 2024 16:00:44 +0800 Subject: [PATCH] refactor: optimize forInsertEntityBatch --- .../main/java/com/mybatisflex/core/dialect/IDialect.java | 3 ++- .../core/dialect/impl/CommonsDialectImpl.java | 2 +- .../com/mybatisflex/core/dialect/impl/OracleDialect.java | 7 ++----- .../com/mybatisflex/core/provider/EntitySqlProvider.java | 9 ++++----- .../java/com/mybatisflex/core/provider/ProviderUtil.java | 4 ++-- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/IDialect.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/IDialect.java index 44727aef..573c8376 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/IDialect.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/IDialect.java @@ -20,6 +20,7 @@ import com.mybatisflex.core.row.Row; import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableManager; +import java.util.Collection; import java.util.List; /** @@ -75,7 +76,7 @@ public interface IDialect { String forInsertEntityWithPk(TableInfo tableInfo, Object entity, boolean ignoreNulls); - String forInsertEntityBatch(TableInfo tableInfo, List entities); + String forInsertEntityBatch(TableInfo tableInfo, Collection entities); String forDeleteEntityById(TableInfo tableInfo); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java index c5f8f0cb..d3d5ca85 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java @@ -653,7 +653,7 @@ public class CommonsDialectImpl implements IDialect { @Override - public String forInsertEntityBatch(TableInfo tableInfo, List entities) { + public String forInsertEntityBatch(TableInfo tableInfo, Collection entities) { StringBuilder sql = new StringBuilder(); sql.append(INSERT_INTO).append(tableInfo.getWrapSchemaAndTableName(this, OperateType.INSERT)); String[] insertColumns = tableInfo.obtainInsertColumns(null, false); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/OracleDialect.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/OracleDialect.java index 88e36f9d..dfde21e4 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/OracleDialect.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/OracleDialect.java @@ -26,10 +26,7 @@ import com.mybatisflex.core.util.CollectionUtil; import com.mybatisflex.core.util.SqlUtil; import com.mybatisflex.core.util.StringUtil; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.StringJoiner; +import java.util.*; import static com.mybatisflex.core.constant.SqlConsts.*; @@ -100,7 +97,7 @@ public class OracleDialect extends CommonsDialectImpl { } @Override - public String forInsertEntityBatch(TableInfo tableInfo, List entities) { + public String forInsertEntityBatch(TableInfo tableInfo, Collection entities) { /** * INSERT ALL * INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/EntitySqlProvider.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/EntitySqlProvider.java index 17240a4a..fe5a5afe 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/EntitySqlProvider.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/EntitySqlProvider.java @@ -119,11 +119,11 @@ public class EntitySqlProvider { * @param params 方法参数 * @param context 上下文对象 * @return SQL 语句 - * @see com.mybatisflex.core.BaseMapper#insertBatch(List) + * @see com.mybatisflex.core.BaseMapper#insertBatch(Collection) * @see com.mybatisflex.core.FlexConsts#METHOD_INSERT_BATCH */ public static String insertBatch(Map params, ProviderContext context) { - List entities = ProviderUtil.getEntities(params); + Collection entities = ProviderUtil.getEntities(params); FlexAssert.notEmpty(entities, "entities"); @@ -263,7 +263,7 @@ public class EntitySqlProvider { boolean ignoreNulls = ProviderUtil.isIgnoreNulls(params); QueryWrapper queryWrapper = ProviderUtil.getQueryWrapper(params); - appendTableConditions(context,queryWrapper,false); + appendTableConditions(context, queryWrapper, false); TableInfo tableInfo = ProviderUtil.getTableInfo(context); @@ -280,7 +280,7 @@ public class EntitySqlProvider { Object[] values = tableInfo.buildUpdateSqlArgs(entity, ignoreNulls, true); Object[] queryParams = CPI.getConditionValueArray(queryWrapper); - Object[] paramValues = ArrayUtil.concat(joinValueArray,ArrayUtil.concat(values,queryParams)); + Object[] paramValues = ArrayUtil.concat(joinValueArray, ArrayUtil.concat(values, queryParams)); ProviderUtil.setSqlArgs(params, paramValues); @@ -288,7 +288,6 @@ public class EntitySqlProvider { } - /** * selectOneById 的 SQL 构建。 * diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/ProviderUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/ProviderUtil.java index 3d8e69b0..18e289a2 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/ProviderUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/provider/ProviderUtil.java @@ -119,8 +119,8 @@ class ProviderUtil { return params.get(FlexConsts.VALUE); } - public static List getEntities(Map params) { - return (List) params.get(FlexConsts.ENTITIES); + public static Collection getEntities(Map params) { + return (Collection) params.get(FlexConsts.ENTITIES); } public static boolean isIgnoreNulls(Map params) {