diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumnAdapter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumnAdapter.java new file mode 100644 index 00000000..2469817c --- /dev/null +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumnAdapter.java @@ -0,0 +1,42 @@ +package com.mybatisflex.core.query; + +import com.mybatisflex.core.dialect.IDialect; +import com.mybatisflex.core.exception.FlexAssert; + +import java.util.List; + +/** + * {@link QueryColumn} 适配器,用于将 {@link QueryCondition} 转换为 {@link QueryColumn}。 + * + * @author 王帅 + * @since 2024-09-29 + */ +public class QueryColumnAdapter extends QueryColumn implements HasParamsColumn { + + private final QueryCondition condition; + + public QueryColumnAdapter(QueryCondition condition) { + FlexAssert.notNull(condition, "condition"); + this.condition = condition; + } + + public QueryCondition getCondition() { + return condition; + } + + @Override + public Object[] getParamValues() { + return WrapperUtil.getValues(condition); + } + + @Override + String toSelectSql(List queryTables, IDialect dialect) { + return condition.toSql(queryTables, dialect) + WrapperUtil.buildColumnAlias(alias, dialect); + } + + @Override + String toConditionSql(List queryTables, IDialect dialect) { + return condition.toSql(queryTables, dialect); + } + +} diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryConditionAdapter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryConditionAdapter.java new file mode 100644 index 00000000..6cbb1b1c --- /dev/null +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryConditionAdapter.java @@ -0,0 +1,31 @@ +package com.mybatisflex.core.query; + +import com.mybatisflex.core.dialect.IDialect; +import com.mybatisflex.core.exception.FlexAssert; + +import java.util.List; + +/** + * {@link QueryCondition} 适配器,用于将 {@link QueryColumn} 转换为 {@link QueryCondition}。 + * + * @author 王帅 + * @since 2024-09-29 + */ +public class QueryConditionAdapter extends QueryCondition { + + public QueryConditionAdapter(QueryColumn column) { + FlexAssert.notNull(column, "column"); + super.column = column; + } + + @Override + public Object getValue() { + return column instanceof HasParamsColumn ? ((HasParamsColumn) column).getParamValues() : null; + } + + @Override + public String toSql(List queryTables, IDialect dialect) { + return column.toConditionSql(queryTables, dialect); + } + +}