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 a1528645..a56cd20b 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 @@ -36,12 +36,14 @@ public class QueryTable implements CloneSupport { } public QueryTable(TableDef tableDef) { - this.name = tableDef.getTableName(); this.schema = tableDef.getSchema(); + this.name = tableDef.getTableName(); } public QueryTable(String name) { - this.name = StringUtil.tryTrim(name); + String[] schemaAndTableName = StringUtil.getSchemaAndTableName(name); + this.schema = schemaAndTableName[0]; + this.name = schemaAndTableName[1]; } public QueryTable(String schema, String name) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java index 468f0604..c7feebb5 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapper.java @@ -35,6 +35,7 @@ public class QueryWrapper extends BaseQueryWrapper { /** * 根据实体类对象,构建查询条件 + * * @param entity 实体类对象 * @return 查询对象 */ @@ -133,14 +134,7 @@ public class QueryWrapper extends BaseQueryWrapper { if (StringUtil.isBlank(table)) { throw new IllegalArgumentException("table must not be null or blank."); } - int indexOf = table.indexOf("."); - if (indexOf > 0) { - String schema = table.substring(0, indexOf); - table = table.substring(indexOf + 1); - from(new QueryTable(schema, table)); - } else { - from(new QueryTable(table)); - } + from(new QueryTable(table)); } return this; } @@ -694,7 +688,7 @@ public class QueryWrapper extends BaseQueryWrapper { } List childQueryWrappers = tableChildQuery == null ? new ArrayList<>() - : new ArrayList<>(tableChildQuery); + : new ArrayList<>(tableChildQuery); childQueryWrappers.addAll(whereChildQuery); childQueryWrappers.addAll(havingChildQuery); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDefs.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDefs.java index 8a72ac15..2efaf911 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDefs.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableDefs.java @@ -66,7 +66,7 @@ public class TableDefs implements Serializable { return Modifier.isPublic(mod) && Modifier.isStatic(mod); }).get(null); - String key = StringUtil.isNotBlank(tableDef.getSchema()) ? tableDef.getSchema() + "." + tableDef.getTableName() : tableDef.getTableName(); + String key = StringUtil.buildSchemaWithTable(tableDef.getSchema(), tableDef.getTableName()); TABLE_DEF_MAP.put(key, tableDef); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java index 3b5c926c..8f22ac4b 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java @@ -137,7 +137,7 @@ public class TableInfo { } public String getTableNameWithSchema() { - return StringUtil.isNotBlank(schema) ? schema + "." + tableName : tableName; + return StringUtil.buildSchemaWithTable(schema, tableName); } public String getWrapSchemaAndTableName(IDialect dialect) { @@ -863,7 +863,7 @@ public class TableInfo { MetaObject metaObject = EntityMetaObject.forObject(entity, reflectorFactory); propertyColumnMapping.forEach((property, column) -> { - if (column.equals(logicDeleteColumn)){ + if (column.equals(logicDeleteColumn)) { return; } Object value = metaObject.getValue(property); @@ -871,6 +871,8 @@ public class TableInfo { QueryColumn queryColumn = TableDefs.getQueryColumn(entityClass, tableNameWithSchema, column); if (queryColumn != null) { queryWrapper.and(queryColumn.eq(value)); + } else { + queryWrapper.and(QueryMethods.column(tableNameWithSchema, column).eq(value)); } } }); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/StringUtil.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/StringUtil.java index 7f14f60f..7cbfc3c6 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/StringUtil.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/util/StringUtil.java @@ -273,6 +273,16 @@ public class StringUtil { } } + public static String buildSchemaWithTable(String schema, String tableName) { + return isNotBlank(schema) ? schema + "." + tableName : tableName; + } + + public static String[] getSchemaAndTableName(String tableNameWithSchema) { + int index = tableNameWithSchema.indexOf("."); + return index <= 0 ? new String[]{null, tableNameWithSchema.trim()} + : new String[]{tableNameWithSchema.substring(0, index).trim(), tableNameWithSchema.substring(index + 1).trim()}; + } + public static String tryTrim(String string) { return string != null ? string.trim() : null; }