From 80d63bdc04d9723aaf7c52b765874a72841d5955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=B8=85?= <1474983351@qq.com> Date: Sun, 29 Sep 2024 09:11:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=88=97=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E7=9B=B8?= =?UTF-8?q?=E4=BA=92=E8=BD=AC=E6=8D=A2=E7=9A=84=E9=80=82=E9=85=8D=E5=99=A8?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/query/QueryColumnAdapter.java | 42 +++++++++++++++++++ .../core/query/QueryConditionAdapter.java | 31 ++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumnAdapter.java create mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryConditionAdapter.java 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); + } + +}