From a3bca3d2da6bfa705de38c3f7ed262a020dd0096 Mon Sep 17 00:00:00 2001 From: Michael Yang Date: Wed, 24 Apr 2024 16:25:14 +0800 Subject: [PATCH 1/2] fix: QueryWrapper.as() is error --- .../com/mybatisflex/core/query/QueryTable.java | 17 +++++++++++++++-- .../com/mybatisflex/core/table/TableDef.java | 12 ------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java index 5091a48b..4962a7b2 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java @@ -19,9 +19,13 @@ import com.mybatisflex.core.FlexConsts; import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.OperateType; import com.mybatisflex.core.exception.FlexExceptions; +import com.mybatisflex.core.util.MapUtil; import com.mybatisflex.core.util.StringUtil; +import java.util.Map; import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; /** * 查询表。 @@ -30,6 +34,13 @@ import java.util.Objects; * @author 王帅 */ public class QueryTable implements CloneSupport { + private static final Map CACHE = new ConcurrentHashMap<>(); + + @SuppressWarnings("unchecked") + protected static V getCache(String key, Function mappingFunction) { + return MapUtil.computeIfAbsent((Map) CACHE, key, mappingFunction); + } + protected String schema; protected String name; @@ -84,8 +95,10 @@ public class QueryTable implements CloneSupport { } public QueryTable as(String alias) { - this.alias = alias; - return this; +// this.alias = alias; +// return this; + String key = getNameWithSchema() + "." + alias; + return getCache(key, k -> new QueryTable(this.schema, this.name, alias)); } boolean isSameTable(QueryTable table) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java index 1a4fa819..8883c5ab 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java @@ -17,11 +17,6 @@ package com.mybatisflex.core.table; import com.mybatisflex.core.query.QueryTable; -import com.mybatisflex.core.util.MapUtil; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; /** * 表定义,内包含字段。 @@ -48,11 +43,4 @@ public abstract class TableDef extends QueryTable { return name; } - private static final Map CACHE = new ConcurrentHashMap<>(); - - @SuppressWarnings("unchecked") - protected static V getCache(String key, Function mappingFunction) { - return MapUtil.computeIfAbsent((Map) CACHE, key, mappingFunction); - } - } From 48b14dbdbe498de04f949e19bd2bbc3b2474959c Mon Sep 17 00:00:00 2001 From: Michael Yang Date: Wed, 24 Apr 2024 17:12:56 +0800 Subject: [PATCH 2/2] refactor: optimize TableDef.java --- .../mybatisflex/core/query/QueryTable.java | 16 ++-------------- .../core/query/SelectQueryTable.java | 4 ++++ .../com/mybatisflex/core/table/TableDef.java | 19 ++++++++++++++++++- .../coretest/QueryWrapperTest.java | 3 +-- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java index 4962a7b2..a90b529e 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryTable.java @@ -19,13 +19,9 @@ import com.mybatisflex.core.FlexConsts; import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.dialect.OperateType; import com.mybatisflex.core.exception.FlexExceptions; -import com.mybatisflex.core.util.MapUtil; import com.mybatisflex.core.util.StringUtil; -import java.util.Map; import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; /** * 查询表。 @@ -34,12 +30,6 @@ import java.util.function.Function; * @author 王帅 */ public class QueryTable implements CloneSupport { - private static final Map CACHE = new ConcurrentHashMap<>(); - - @SuppressWarnings("unchecked") - protected static V getCache(String key, Function mappingFunction) { - return MapUtil.computeIfAbsent((Map) CACHE, key, mappingFunction); - } protected String schema; @@ -95,10 +85,8 @@ public class QueryTable implements CloneSupport { } public QueryTable as(String alias) { -// this.alias = alias; -// return this; - String key = getNameWithSchema() + "." + alias; - return getCache(key, k -> new QueryTable(this.schema, this.name, alias)); + this.alias = alias; + return this; } boolean isSameTable(QueryTable table) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryTable.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryTable.java index 8947af8f..901f9c44 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryTable.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/SelectQueryTable.java @@ -64,4 +64,8 @@ public class SelectQueryTable extends QueryTable { return clone; } + @Override + public String toString() { + return queryWrapper.toSQL(); + } } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java index 8883c5ab..4627c39e 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDef.java @@ -17,6 +17,11 @@ package com.mybatisflex.core.table; import com.mybatisflex.core.query.QueryTable; +import com.mybatisflex.core.util.MapUtil; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; /** * 表定义,内包含字段。 @@ -24,7 +29,14 @@ import com.mybatisflex.core.query.QueryTable; * @author 王帅 * @since 2024-03-11 */ -public abstract class TableDef extends QueryTable { +public class TableDef extends QueryTable { + + private static final Map CACHE = new ConcurrentHashMap<>(); + + @SuppressWarnings("unchecked") + protected static V getCache(String key, Function mappingFunction) { + return MapUtil.computeIfAbsent((Map) CACHE, key, mappingFunction); + } protected TableDef(String schema, String tableName) { super(schema, tableName); @@ -43,4 +55,9 @@ public abstract class TableDef extends QueryTable { return name; } + public TableDef as(String alias) { + String key = getNameWithSchema() + "." + alias; + return getCache(key, k -> new TableDef(this.schema, this.name, alias)); + } + } diff --git a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/QueryWrapperTest.java b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/QueryWrapperTest.java index de23fb47..8fe1cff7 100644 --- a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/QueryWrapperTest.java +++ b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/QueryWrapperTest.java @@ -23,9 +23,8 @@ import com.mybatisflex.core.query.QueryWrapper; import org.junit.Assert; import org.junit.Test; -import static com.mybatisflex.core.query.QueryMethods.*; import static com.mybatisflex.coretest.table.AccountTableDef.ACCOUNT; -import static org.junit.Assert.assertEquals; +import static com.mybatisflex.core.query.QueryMethods.*; /** * Lambda 构建 SQL 测试。