From b27760c96986d8682ffc27fece08b61ecce84269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Fri, 14 Apr 2023 10:41:43 +0800 Subject: [PATCH] optimize TableInfoFactory.java --- .../java/com/mybatisflex/core/row/RowUtil.java | 4 ++-- .../core/table/TableInfoFactory.java | 17 ++++++++++------- .../mybatisflex/coretest/AccountSqlTester.java | 2 +- .../mybatisflex/coretest/ArticleSqlTester.java | 12 ++++++------ 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/row/RowUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/row/RowUtil.java index a55152e6..f19ba104 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/row/RowUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/row/RowUtil.java @@ -63,7 +63,7 @@ public class RowUtil { public static T toEntity(Row row, Class entityClass) { - TableInfo tableInfo = TableInfoFactory.ofEntityClass(entityClass); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(entityClass); return tableInfo.newInstanceByRow(row); } @@ -72,7 +72,7 @@ public class RowUtil { if (rows == null || rows.isEmpty()) { return Collections.emptyList(); } else { - TableInfo tableInfo = TableInfoFactory.ofEntityClass(entityClass); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(entityClass); List entityList = new ArrayList<>(); for (Row row : rows) { T entity = tableInfo.newInstanceByRow(row); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java index 8f2bf472..83ac9e69 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfoFactory.java @@ -67,17 +67,17 @@ public class TableInfoFactory { public static TableInfo ofMapperClass(Class mapperClass) { return MapUtil.computeIfAbsent(tableInfoMap, mapperClass, key -> { Class entityClass = getEntityClass(mapperClass); -// return entityClass != null ? ofEntityClass(entityClass) : null; - return entityClass != null ? createTableInfo(entityClass) : null; + if (entityClass == null){ + return null; + } + + TableInfo tableInfo = createTableInfo(entityClass); + tableInfoMap.put(entityClass,tableInfo); + return tableInfo; }); } - public static TableInfo ofEntityClass(Class entityClass) { - return MapUtil.computeIfAbsent(tableInfoMap, entityClass, key -> createTableInfo(entityClass)); - } - - public static TableInfo getByEntityClass(Class entityClass) { return tableInfoMap.get(entityClass); } @@ -98,6 +98,9 @@ public class TableInfoFactory { private static TableInfo createTableInfo(Class entityClass) { + + + TableInfo tableInfo = new TableInfo(); tableInfo.setEntityClass(entityClass); tableInfo.setReflector(new Reflector(entityClass)); diff --git a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/AccountSqlTester.java b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/AccountSqlTester.java index feb821e9..4ac4b8a3 100644 --- a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/AccountSqlTester.java +++ b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/AccountSqlTester.java @@ -301,7 +301,7 @@ public class AccountSqlTester { @Test public void testDeleteSql() { IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Account.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Account.class); String sql = dialect.forDeleteEntityById(tableInfo); System.out.println(sql); } diff --git a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/ArticleSqlTester.java b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/ArticleSqlTester.java index 553e39df..58fd4db6 100644 --- a/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/ArticleSqlTester.java +++ b/mybatis-flex-core/src/test/java/com/mybatisflex/coretest/ArticleSqlTester.java @@ -31,7 +31,7 @@ public class ArticleSqlTester { article.setContent("aaa"); IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forInsertEntity(tableInfo, article); System.out.println(sql); } @@ -47,7 +47,7 @@ public class ArticleSqlTester { article2.setContent("bbb"); IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forInsertEntityBatch(tableInfo, CollectionUtil.newArrayList(article1, article2)); System.out.println(sql); } @@ -56,7 +56,7 @@ public class ArticleSqlTester { @Test public void testDeleteSql() { IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forDeleteEntityById(tableInfo); System.out.println(sql); } @@ -65,7 +65,7 @@ public class ArticleSqlTester { @Test public void testDeleteByIdsSql() { IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forDeleteEntityBatchByIds(tableInfo, new Object[]{1, 2, 3}); System.out.println(sql); } @@ -79,7 +79,7 @@ public class ArticleSqlTester { article.setVersion(1L); IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forUpdateEntity(tableInfo, article, true); System.out.println(sql); } @@ -96,7 +96,7 @@ public class ArticleSqlTester { .where(ARTICLE.ID.ge(100)); IDialect dialect = new CommonsDialectImpl(); - TableInfo tableInfo = TableInfoFactory.ofEntityClass(Article.class); + TableInfo tableInfo = TableInfoFactory.getByEntityClass(Article.class); String sql = dialect.forUpdateEntityByQuery(tableInfo, article, true, queryWrapper); System.out.println(sql); }