From 6ad154c6b36da9fd92e4c389cfc75a78eaa399a4 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 21 Jul 2023 14:20:39 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20QueryWrapperAd?= =?UTF-8?q?apter=20=E7=94=A8=E4=BA=8E=E6=89=A9=E5=B1=95=20QueryWrapper=20?= =?UTF-8?q?=E7=B1=BB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/query/QueryWrapperAdapter.java | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java new file mode 100644 index 00000000..b2dc8b4d --- /dev/null +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java @@ -0,0 +1,268 @@ +/* + * 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.query; + +import com.mybatisflex.core.table.TableDef; +import com.mybatisflex.core.util.LambdaGetter; + +import java.util.Map; +import java.util.function.Consumer; + +/** + * 抽象包装器。 + * + * @param 包装器类型 + * @author 王帅 + * @since 2023-07-21 + */ +@SuppressWarnings("unchecked") +public abstract class QueryWrapperAdapter extends QueryWrapper { + + @Override + public T select() { + return (T) this; + } + + @Override + public T select(String... columns) { + super.select(columns); + return (T) this; + } + + @Override + public T select(LambdaGetter... lambdaGetters) { + super.select(lambdaGetters); + return (T) this; + } + + @Override + public T select(QueryColumn... queryColumns) { + super.select(queryColumns); + return (T) this; + } + + @Override + public T select(QueryColumn[]... queryColumns) { + super.select(queryColumns); + return (T) this; + } + + @Override + public T from(TableDef... tableDefs) { + super.from(tableDefs); + return (T) this; + } + + @Override + public T from(Class... entityClasses) { + super.from(entityClasses); + return (T) this; + } + + @Override + public T from(String... tables) { + super.from(tables); + return (T) this; + } + + @Override + public T from(QueryTable... tables) { + super.from(tables); + return (T) this; + } + + @Override + public T from(QueryWrapper queryWrapper) { + super.from(queryWrapper); + return (T) this; + } + + @Override + public T as(String alias) { + super.as(alias); + return (T) this; + } + + @Override + public T where(QueryCondition queryCondition) { + super.where(queryCondition); + return (T) this; + } + + @Override + public T where(String sql) { + super.where(sql); + return (T) this; + } + + @Override + public T where(String sql, Object... params) { + super.where(sql, params); + return (T) this; + } + + @Override + public T where(Map whereConditions) { + super.where(whereConditions); + return (T) this; + } + + @Override + public T and(QueryCondition queryCondition) { + super.and(queryCondition); + return (T) this; + } + + @Override + public T and(String sql) { + super.and(sql); + return (T) this; + } + + @Override + public T and(String sql, Object... params) { + super.and(sql, params); + return (T) this; + } + + @Override + public T and(Consumer consumer) { + super.and(consumer); + return (T) this; + } + + @Override + public T or(QueryCondition queryCondition) { + super.or(queryCondition); + return (T) this; + } + + @Override + public T or(String sql) { + super.or(sql); + return (T) this; + } + + @Override + public T or(String sql, Object... params) { + super.or(sql, params); + return (T) this; + } + + @Override + public T or(Consumer consumer) { + super.or(consumer); + return (T) this; + } + + @Override + public T union(QueryWrapper unionQuery) { + super.union(unionQuery); + return (T) this; + } + + @Override + public T unionAll(QueryWrapper unionQuery) { + super.unionAll(unionQuery); + return (T) this; + } + + @Override + public T forUpdate() { + super.forUpdate(); + return (T) this; + } + + @Override + public T forUpdateNoWait() { + super.forUpdateNoWait(); + return (T) this; + } + + @Override + public T groupBy(String name) { + super.groupBy(name); + return (T) this; + } + + @Override + public T groupBy(String... names) { + super.groupBy(names); + return (T) this; + } + + @Override + public T groupBy(QueryColumn column) { + super.groupBy(column); + return (T) this; + } + + @Override + public T groupBy(QueryColumn... columns) { + super.groupBy(columns); + return (T) this; + } + + @Override + public T having(QueryCondition queryCondition) { + super.having(queryCondition); + return (T) this; + } + + @Override + public T orderBy(QueryOrderBy... orderBys) { + super.orderBy(orderBys); + return (T) this; + } + + @Override + public T orderBy(String... orderBys) { + super.orderBy(orderBys); + return (T) this; + } + + @Override + public T limit(Integer rows) { + super.limit(rows); + return (T) this; + } + + @Override + public T offset(Integer offset) { + super.offset(offset); + return (T) this; + } + + @Override + public T limit(Integer offset, Integer rows) { + super.limit(offset, rows); + return (T) this; + } + + @Override + public T datasource(String datasource) { + super.datasource(datasource); + return (T) this; + } + + @Override + public T hint(String hint) { + super.hint(hint); + return (T) this; + } + +} From 34148e89741632eb45dc415fdae4cd7d82a0eeb8 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 21 Jul 2023 14:28:06 +0800 Subject: [PATCH 2/5] remove: QueryWrapperAdapter --- .../core/query/QueryWrapperAdapter.java | 268 ------------------ 1 file changed, 268 deletions(-) delete mode 100644 mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java deleted file mode 100644 index b2dc8b4d..00000000 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryWrapperAdapter.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * 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.query; - -import com.mybatisflex.core.table.TableDef; -import com.mybatisflex.core.util.LambdaGetter; - -import java.util.Map; -import java.util.function.Consumer; - -/** - * 抽象包装器。 - * - * @param 包装器类型 - * @author 王帅 - * @since 2023-07-21 - */ -@SuppressWarnings("unchecked") -public abstract class QueryWrapperAdapter extends QueryWrapper { - - @Override - public T select() { - return (T) this; - } - - @Override - public T select(String... columns) { - super.select(columns); - return (T) this; - } - - @Override - public T select(LambdaGetter... lambdaGetters) { - super.select(lambdaGetters); - return (T) this; - } - - @Override - public T select(QueryColumn... queryColumns) { - super.select(queryColumns); - return (T) this; - } - - @Override - public T select(QueryColumn[]... queryColumns) { - super.select(queryColumns); - return (T) this; - } - - @Override - public T from(TableDef... tableDefs) { - super.from(tableDefs); - return (T) this; - } - - @Override - public T from(Class... entityClasses) { - super.from(entityClasses); - return (T) this; - } - - @Override - public T from(String... tables) { - super.from(tables); - return (T) this; - } - - @Override - public T from(QueryTable... tables) { - super.from(tables); - return (T) this; - } - - @Override - public T from(QueryWrapper queryWrapper) { - super.from(queryWrapper); - return (T) this; - } - - @Override - public T as(String alias) { - super.as(alias); - return (T) this; - } - - @Override - public T where(QueryCondition queryCondition) { - super.where(queryCondition); - return (T) this; - } - - @Override - public T where(String sql) { - super.where(sql); - return (T) this; - } - - @Override - public T where(String sql, Object... params) { - super.where(sql, params); - return (T) this; - } - - @Override - public T where(Map whereConditions) { - super.where(whereConditions); - return (T) this; - } - - @Override - public T and(QueryCondition queryCondition) { - super.and(queryCondition); - return (T) this; - } - - @Override - public T and(String sql) { - super.and(sql); - return (T) this; - } - - @Override - public T and(String sql, Object... params) { - super.and(sql, params); - return (T) this; - } - - @Override - public T and(Consumer consumer) { - super.and(consumer); - return (T) this; - } - - @Override - public T or(QueryCondition queryCondition) { - super.or(queryCondition); - return (T) this; - } - - @Override - public T or(String sql) { - super.or(sql); - return (T) this; - } - - @Override - public T or(String sql, Object... params) { - super.or(sql, params); - return (T) this; - } - - @Override - public T or(Consumer consumer) { - super.or(consumer); - return (T) this; - } - - @Override - public T union(QueryWrapper unionQuery) { - super.union(unionQuery); - return (T) this; - } - - @Override - public T unionAll(QueryWrapper unionQuery) { - super.unionAll(unionQuery); - return (T) this; - } - - @Override - public T forUpdate() { - super.forUpdate(); - return (T) this; - } - - @Override - public T forUpdateNoWait() { - super.forUpdateNoWait(); - return (T) this; - } - - @Override - public T groupBy(String name) { - super.groupBy(name); - return (T) this; - } - - @Override - public T groupBy(String... names) { - super.groupBy(names); - return (T) this; - } - - @Override - public T groupBy(QueryColumn column) { - super.groupBy(column); - return (T) this; - } - - @Override - public T groupBy(QueryColumn... columns) { - super.groupBy(columns); - return (T) this; - } - - @Override - public T having(QueryCondition queryCondition) { - super.having(queryCondition); - return (T) this; - } - - @Override - public T orderBy(QueryOrderBy... orderBys) { - super.orderBy(orderBys); - return (T) this; - } - - @Override - public T orderBy(String... orderBys) { - super.orderBy(orderBys); - return (T) this; - } - - @Override - public T limit(Integer rows) { - super.limit(rows); - return (T) this; - } - - @Override - public T offset(Integer offset) { - super.offset(offset); - return (T) this; - } - - @Override - public T limit(Integer offset, Integer rows) { - super.limit(offset, rows); - return (T) this; - } - - @Override - public T datasource(String datasource) { - super.datasource(datasource); - return (T) this; - } - - @Override - public T hint(String hint) { - super.hint(hint); - return (T) this; - } - -} From bab86b47197ac248e1023865da4b237796b9c11e Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 21 Jul 2023 20:23:50 +0800 Subject: [PATCH 3/5] refactor: open method. --- .../AbstractLogicDeleteProcessor.java | 4 ++-- .../core/logicdelete/LogicDeleteProcessor.java | 18 ++++++++++++++++-- .../impl/BooleanLogicDeleteProcessor.java | 6 +++--- .../impl/DateTimeLogicDeleteProcessor.java | 6 +++--- .../impl/DefaultLogicDeleteProcessor.java | 4 ++-- .../impl/IntegerLogicDeleteProcessor.java | 6 +++--- .../impl/TimeStampLogicDeleteProcessor.java | 6 +++--- 7 files changed, 32 insertions(+), 18 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/AbstractLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/AbstractLogicDeleteProcessor.java index 60dc6904..cc55732a 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/AbstractLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/AbstractLogicDeleteProcessor.java @@ -52,14 +52,14 @@ public abstract class AbstractLogicDeleteProcessor implements LogicDeleteProcess * * @return 未删除标记值 */ - protected abstract Object getLogicNormalValue(); + public abstract Object getLogicNormalValue(); /** * 获取逻辑删除列删除时标记值。 * * @return 删除时标记值 */ - protected abstract Object getLogicDeletedValue(); + public abstract Object getLogicDeletedValue(); } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/LogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/LogicDeleteProcessor.java index 8e343786..fc99bd84 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/LogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/LogicDeleteProcessor.java @@ -28,7 +28,7 @@ public interface LogicDeleteProcessor { * 用户构建查询正常数据的条件。 * * @param logicColumn 逻辑删除列 - * @param tableInfo + * @param tableInfo 表信息 * @param dialect 数据库方言 */ String buildLogicNormalCondition(String logicColumn, TableInfo tableInfo, IDialect dialect); @@ -37,7 +37,7 @@ public interface LogicDeleteProcessor { * 用户与构建删除数据时的内容。 * * @param logicColumn 逻辑删除列 - * @param tableInfo + * @param tableInfo 表信息 * @param dialect 数据库方言 */ String buildLogicDeletedSet(String logicColumn, TableInfo tableInfo, IDialect dialect); @@ -50,6 +50,20 @@ public interface LogicDeleteProcessor { */ void buildQueryCondition(QueryWrapper queryWrapper, TableInfo tableInfo); + /** + * 获取逻辑删除列未删除标记值。 + * + * @return 未删除标记值 + */ + Object getLogicNormalValue(); + + /** + * 获取逻辑删除列删除时标记值。 + * + * @return 删除时标记值 + */ + Object getLogicDeletedValue(); + } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/BooleanLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/BooleanLogicDeleteProcessor.java index cc8e1017..87b90c44 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/BooleanLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/BooleanLogicDeleteProcessor.java @@ -30,7 +30,7 @@ public class BooleanLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code false} 表示数据未删除。 */ @Override - protected Object getLogicNormalValue() { + public Object getLogicNormalValue() { return false; } @@ -38,8 +38,8 @@ public class BooleanLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code true} 表示数据删除。 */ @Override - protected Object getLogicDeletedValue() { + public Object getLogicDeletedValue() { return true; } -} \ No newline at end of file +} 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 1f842be0..beedb5e0 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 @@ -45,7 +45,7 @@ public class DateTimeLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code null} 表示数据未删除。 */ @Override - protected Object getLogicNormalValue() { + public Object getLogicNormalValue() { return null; } @@ -53,8 +53,8 @@ public class DateTimeLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code NOW()} 表示数据删除,并记录删除时间。 */ @Override - protected Object getLogicDeletedValue() { + public Object getLogicDeletedValue() { return "NOW()"; } -} \ No newline at end of file +} diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DefaultLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DefaultLogicDeleteProcessor.java index 33ea24ef..19566fdb 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DefaultLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DefaultLogicDeleteProcessor.java @@ -37,7 +37,7 @@ public class DefaultLogicDeleteProcessor extends AbstractLogicDeleteProcessor { @Override - protected Object getLogicNormalValue() { + public Object getLogicNormalValue() { Object normalValueOfLogicDelete = FlexGlobalConfig.getDefaultConfig().getNormalValueOfLogicDelete(); if (normalValueOfLogicDelete instanceof Number || normalValueOfLogicDelete instanceof Boolean) { @@ -48,7 +48,7 @@ public class DefaultLogicDeleteProcessor extends AbstractLogicDeleteProcessor { @Override - protected Object getLogicDeletedValue() { + public Object getLogicDeletedValue() { Object deletedValueOfLogicDelete = FlexGlobalConfig.getDefaultConfig().getDeletedValueOfLogicDelete(); if (deletedValueOfLogicDelete instanceof Number || deletedValueOfLogicDelete instanceof Boolean) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/IntegerLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/IntegerLogicDeleteProcessor.java index be981042..e92345ae 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/IntegerLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/IntegerLogicDeleteProcessor.java @@ -30,7 +30,7 @@ public class IntegerLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code 0} 表示数据未删除。 */ @Override - protected Object getLogicNormalValue() { + public Object getLogicNormalValue() { return 0; } @@ -38,8 +38,8 @@ public class IntegerLogicDeleteProcessor extends AbstractLogicDeleteProcessor { * 逻辑删除字段值为 {@code 1} 表示数据删除。 */ @Override - protected Object getLogicDeletedValue() { + public Object getLogicDeletedValue() { return 1; } -} \ No newline at end of file +} diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/TimeStampLogicDeleteProcessor.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/TimeStampLogicDeleteProcessor.java index 8cd2f6f2..61d4d8a4 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/TimeStampLogicDeleteProcessor.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/TimeStampLogicDeleteProcessor.java @@ -30,7 +30,7 @@ public class TimeStampLogicDeleteProcessor extends AbstractLogicDeleteProcessor * 逻辑删除字段值为 {@code 0} 表示数据未删除。 */ @Override - protected Object getLogicNormalValue() { + public Object getLogicNormalValue() { return 0; } @@ -38,8 +38,8 @@ public class TimeStampLogicDeleteProcessor extends AbstractLogicDeleteProcessor * 逻辑删除字段值为 {@code NOW()} 表示数据删除,并记录删除时时间戳。 */ @Override - protected Object getLogicDeletedValue() { + public Object getLogicDeletedValue() { return System.currentTimeMillis(); } -} \ No newline at end of file +} From 3ecd1beb37fbbb8dd750d2325fec6eb6d31b9212 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 21 Jul 2023 20:25:25 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=80=BC=E5=88=9D=E5=A7=8B=E5=8C=96=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mybatisflex/core/table/TableInfo.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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 8f22ac4b..63db2a0f 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 @@ -1178,12 +1178,15 @@ public class TableInfo { } MetaObject metaObject = EntityMetaObject.forObject(entityObject, reflectorFactory); - Object columnValue = getPropertyValue(metaObject, columnInfoMapping.get(logicDeleteColumn).property); + ColumnInfo logicDeleteColumn = columnInfoMapping.get(this.logicDeleteColumn); + Object columnValue = getPropertyValue(metaObject, logicDeleteColumn.property); if (columnValue == null) { - String property = columnInfoMapping.get(logicDeleteColumn).property; - Class setterType = metaObject.getSetterType(property); - Object normalValueOfLogicDelete = FlexGlobalConfig.getDefaultConfig().getNormalValueOfLogicDelete(); - metaObject.setValue(property, ConvertUtil.convert(normalValueOfLogicDelete, setterType)); + Object normalValueOfLogicDelete = LogicDeleteManager.getProcessor().getLogicNormalValue(); + if (normalValueOfLogicDelete != null) { + String property = logicDeleteColumn.property; + Class setterType = metaObject.getSetterType(property); + metaObject.setValue(property, ConvertUtil.convert(normalValueOfLogicDelete, setterType)); + } } } From 07d5816babd43cdc045167da7ca34c9f0b5ae1dd Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Fri, 21 Jul 2023 20:28:02 +0800 Subject: [PATCH 5/5] =?UTF-8?q?doc:=20=E9=93=BE=E6=8E=A5=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/core/logic-delete.md | 38 +++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/docs/zh/core/logic-delete.md b/docs/zh/core/logic-delete.md index 01e51250..a2793b9e 100644 --- a/docs/zh/core/logic-delete.md +++ b/docs/zh/core/logic-delete.md @@ -20,7 +20,7 @@ public class Account { @Column(isLogicDelete = true) private Boolean isDelete; - + //Getter Setter... } ``` @@ -33,8 +33,10 @@ accountMapper.deleteById(1); MyBatis 执行的 SQL 如下: ```sql -UPDATE `tb_account` SET `is_delete` = 1 -WHERE `id` = ? AND `is_delete` = 0 +UPDATE `tb_account` +SET `is_delete` = 1 +WHERE `id` = ? + AND `is_delete` = 0 ``` 可以看出,当执行 deleteById 时,MyBatis 只是进行了 update 操作,而非 delete 操作。 @@ -66,10 +68,12 @@ QueryWrapper query1 = QueryWrapper.create() 其执行的 SQL 如下: ```sql -SELECT * FROM `tb_account` - LEFT JOIN `tb_article` AS `a` ON `tb_account`.`id` = `a`.`account_id` -WHERE `tb_account`.`age` >= 10 - AND `tb_account`.`is_delete` = 0 AND `a`.`is_delete` = 0 +SELECT * +FROM `tb_account` + LEFT JOIN `tb_article` AS `a` ON `tb_account`.`id` = `a`.`account_id` +WHERE `tb_account`.`age` >= 10 + AND `tb_account`.`is_delete` = 0 + AND `a`.`is_delete` = 0 ``` 自动添加上 `tb_account.is_delete = 0 AND a.is_delete = 0` 条件。 @@ -90,12 +94,14 @@ WHERE `tb_account`.`age` >= 10 其执行的 SQL 如下: ```sql -SELECT * FROM `tb_account` - LEFT JOIN ( - SELECT * FROM `tb_article` WHERE `id` >= 100 AND `is_delete` = 0 - ) AS `a` - ON `tb_account`.`id` = a.id -WHERE `tb_account`.`age` >= 10 AND `tb_account`.`is_delete` = 0 +SELECT * +FROM `tb_account` + LEFT JOIN (SELECT * + FROM `tb_article` + WHERE `id` >= 100 AND `is_delete` = 0) AS `a` + ON `tb_account`.`id` = a.id +WHERE `tb_account`.`age` >= 10 + AND `tb_account`.`is_delete` = 0 ``` @@ -179,7 +185,7 @@ public interface LogicDeleteProcessor { } ``` -具体实现可以参考:[DefaultLogicDeleteProcessorImpl](https://gitee.com/mybatis-flex/mybatis-flex/blob/main/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/DefaultLogicDeleteProcessorImpl.java) +具体实现可以参考:[DefaultLogicDeleteProcessor](https://gitee.com/mybatis-flex/mybatis-flex/blob/main/mybatis-flex-core/src/main/java/com/mybatisflex/core/logicdelete/impl/DefaultLogicDeleteProcessor.java) ## SpringBoot 支持 @@ -195,6 +201,6 @@ public class MyConfiguration { LogicDeleteProcessor processor = new ....; return processor; } - + } -``` \ No newline at end of file +```