From 9d464caf3eea715deb8abb5af017ffdb40aba372 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Thu, 9 Nov 2023 21:12:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8F=96=E7=9B=B8?= =?UTF-8?q?=E5=8F=8D=E6=95=B0=E7=9A=84=E6=9E=84=E5=BB=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/query/NegativeQueryColumn.java | 40 +++++++++++++++++++ .../mybatisflex/core/query/QueryMethods.java | 7 ++++ 2 files changed, 47 insertions(+) create mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/query/NegativeQueryColumn.java diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/NegativeQueryColumn.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/NegativeQueryColumn.java new file mode 100644 index 00000000..729a8849 --- /dev/null +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/NegativeQueryColumn.java @@ -0,0 +1,40 @@ +package com.mybatisflex.core.query; + +import com.mybatisflex.core.FlexConsts; +import com.mybatisflex.core.dialect.IDialect; + +import java.util.List; + +/** + * 取相反数({@code -column})。 + * + * @author 王帅 + * @since 2023-11-09 + */ +public class NegativeQueryColumn extends QueryColumn implements HasParamsColumn { + + private final QueryColumn queryColumn; + + public NegativeQueryColumn(QueryColumn queryColumn) { + this.queryColumn = queryColumn; + } + + @Override + public Object[] getParamValues() { + if (queryColumn instanceof HasParamsColumn) { + return ((HasParamsColumn) queryColumn).getParamValues(); + } + return FlexConsts.EMPTY_ARRAY; + } + + @Override + String toSelectSql(List queryTables, IDialect dialect) { + return toConditionSql(queryTables, dialect) + WrapperUtil.buildColumnAlias(alias, dialect); + } + + @Override + String toConditionSql(List queryTables, IDialect dialect) { + return "-" + queryColumn.toConditionSql(queryTables, dialect); + } + +} diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryMethods.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryMethods.java index a51d20ee..768c6f83 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryMethods.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryMethods.java @@ -2408,6 +2408,13 @@ public class QueryMethods { return new RawQueryColumn("'" + s + "'"); } + /** + * 构建相反数。 + */ + public static QueryColumn negative(QueryColumn queryColumn) { + return new NegativeQueryColumn(queryColumn); + } + /** * 构建自定义列。 */