From 206f4a080b1a0138802baf8435dc2e13b7fc4ecd Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Sun, 30 Jul 2023 17:16:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=88=97?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BC=E4=B8=BA=20null=20=E5=80=BC?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NullableColumnLogicDeleteProcessor.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/NullableColumnLogicDeleteProcessor.java diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/NullableColumnLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/NullableColumnLogicDeleteProcessor.java new file mode 100644 index 00000000..8a9a0bfa --- /dev/null +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/NullableColumnLogicDeleteProcessor.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com). + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *
+ * http://www.apache.org/licenses/LICENSE-2.0 + *
+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.mybatisflex.core.logicdelete; + +import com.mybatisflex.core.dialect.IDialect; +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.table.TableInfo; + +/** + * 数据列默认值为 {@code null} 值的逻辑删除处理器。 + * + * @author 王帅 + * @since 2023-07-30 + */ +public abstract class NullableColumnLogicDeleteProcessor extends AbstractLogicDeleteProcessor { + + @Override + public String buildLogicNormalCondition(String logicColumn, TableInfo tableInfo, IDialect dialect) { + return dialect.wrap(logicColumn) + " IS NULL"; + } + + @Override + public void buildQueryCondition(QueryWrapper queryWrapper, TableInfo tableInfo) { + QueryColumn queryColumn = new QueryColumn(tableInfo.getSchema(), tableInfo.getTableName(), tableInfo.getLogicDeleteColumn()); + queryWrapper.and(queryColumn.isNull()); + } + + /** + * 逻辑删除字段值为 {@code null} 表示数据未删除。 + */ + @Override + public Object getLogicNormalValue() { + return null; + } + +} From fb3d2e60125daf7e614231cf95e7dc4da85deffe Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Sun, 30 Jul 2023 17:16:40 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E7=BB=A7=E6=89=BF=20NullableCo?= =?UTF-8?q?lumnLogicDeleteProcessor=20=E5=87=8F=E5=B0=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=87=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DateTimeLogicDeleteProcessor.java | 27 ++----------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DateTimeLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DateTimeLogicDeleteProcessor.java index beedb5e0..9ad4164a 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DateTimeLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DateTimeLogicDeleteProcessor.java @@ -16,11 +16,7 @@ package com.mybatisflex.core.logicdelete.impl; -import com.mybatisflex.core.dialect.IDialect; -import com.mybatisflex.core.logicdelete.AbstractLogicDeleteProcessor; -import com.mybatisflex.core.query.QueryColumn; -import com.mybatisflex.core.query.QueryWrapper; -import com.mybatisflex.core.table.TableInfo; +import com.mybatisflex.core.logicdelete.NullableColumnLogicDeleteProcessor; /** * {@link java.time.LocalDateTime} 类型的属性对应的逻辑删除处理器。 @@ -28,26 +24,7 @@ import com.mybatisflex.core.table.TableInfo; * @author 王帅 * @since 2023-06-20 */ -public class DateTimeLogicDeleteProcessor extends AbstractLogicDeleteProcessor { - - @Override - public String buildLogicNormalCondition(String logicColumn, TableInfo tableInfo, IDialect dialect) { - return dialect.wrap(logicColumn) + " IS NULL"; - } - - @Override - public void buildQueryCondition(QueryWrapper queryWrapper, TableInfo tableInfo) { - QueryColumn queryColumn = new QueryColumn(tableInfo.getSchema(), tableInfo.getTableName(), tableInfo.getLogicDeleteColumn()); - queryWrapper.and(queryColumn.isNull()); - } - - /** - * 逻辑删除字段值为 {@code null} 表示数据未删除。 - */ - @Override - public Object getLogicNormalValue() { - return null; - } +public class DateTimeLogicDeleteProcessor extends NullableColumnLogicDeleteProcessor { /** * 逻辑删除字段值为 {@code NOW()} 表示数据删除,并记录删除时间。 From f1a2ab3a02d4386a173591ffcb4f24f117556a66 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Sun, 30 Jul 2023 17:17:54 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E6=9E=84=E5=BB=BA=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9F=A5=E8=AF=A2=E6=AD=A3=E5=B8=B8=E5=80=BC?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PrimaryKeyLogicDeleteProcessor.java | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/PrimaryKeyLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/PrimaryKeyLogicDeleteProcessor.java index df8012a4..d9a8739a 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/PrimaryKeyLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/PrimaryKeyLogicDeleteProcessor.java @@ -18,7 +18,7 @@ package com.mybatisflex.core.logicdelete.impl; import com.mybatisflex.core.dialect.IDialect; import com.mybatisflex.core.exception.FlexAssert; -import com.mybatisflex.core.logicdelete.AbstractLogicDeleteProcessor; +import com.mybatisflex.core.logicdelete.NullableColumnLogicDeleteProcessor; import com.mybatisflex.core.table.IdInfo; import com.mybatisflex.core.table.TableInfo; @@ -33,12 +33,7 @@ import static com.mybatisflex.core.constant.SqlConsts.EQUALS; * @see I7O1VV * @since 2023-07-26 */ -public class PrimaryKeyLogicDeleteProcessor extends AbstractLogicDeleteProcessor { - - @Override - public String buildLogicNormalCondition(String logicColumn, TableInfo tableInfo, IDialect dialect) { - return dialect.wrap(logicColumn) + " IS NULL"; - } +public class PrimaryKeyLogicDeleteProcessor extends NullableColumnLogicDeleteProcessor { @Override public String buildLogicDeletedSet(String logicColumn, TableInfo tableInfo, IDialect dialect) { @@ -48,14 +43,6 @@ public class PrimaryKeyLogicDeleteProcessor extends AbstractLogicDeleteProcessor return dialect.wrap(logicColumn) + EQUALS + dialect.wrap(column); } - /** - * 正常未删除的值为 {@code null},兼容不同的主键类型。 - */ - @Override - public Object getLogicNormalValue() { - return null; - } - /** * 逻辑删除后,则更新逻辑删除字段值为主键的值。 */