From 7efad696da051f3b01aa1c0efb67e67920be6854 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Fri, 19 Nov 2021 11:07:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9E=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yulichang/method/MPJAbstractMethod.java | 2 +- .../yulichang/method/MPJBaseMethod.java | 69 ++++++++++++++++--- .../yulichang/method/mp/TableAlias.java | 52 -------------- 3 files changed, 60 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java b/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java index c6ca48b..e229cc5 100644 --- a/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java +++ b/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java @@ -20,7 +20,7 @@ public abstract class MPJAbstractMethod extends AbstractMethod implements MPJBas */ @Override protected String sqlWhereEntityWrapper(boolean newLine, TableInfo table) { - return whereEntityWrapper(newLine); + return mpjSqlWhereEntityWrapper(newLine, table); } @Override diff --git a/src/main/java/com/github/yulichang/method/MPJBaseMethod.java b/src/main/java/com/github/yulichang/method/MPJBaseMethod.java index c1b1b06..543fed6 100644 --- a/src/main/java/com/github/yulichang/method/MPJBaseMethod.java +++ b/src/main/java/com/github/yulichang/method/MPJBaseMethod.java @@ -1,5 +1,6 @@ package com.github.yulichang.method; +import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; @@ -11,16 +12,64 @@ import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils; */ public interface MPJBaseMethod extends Constants { - default String whereEntityWrapper(boolean newLine) { - String sqlScript = SqlScriptUtils.convertIf(String.format("${%s}", WRAPPER_SQLSEGMENT), - String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, - WRAPPER_NONEMPTYOFWHERE), true); - sqlScript = SqlScriptUtils.convertWhere(sqlScript) + NEWLINE; - sqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), - String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, - WRAPPER_EMPTYOFWHERE), true); - sqlScript = SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", WRAPPER), true); - return newLine ? NEWLINE + sqlScript : sqlScript; + default String mpjSqlWhereEntityWrapper(boolean newLine, TableInfo table) { + if (table.isWithLogicDelete()) { + String sqlScript = (NEWLINE + getLogicDeleteSql(table, true, true) + NEWLINE); + String normalSqlScript = SqlScriptUtils.convertIf(String.format("AND ${%s}", WRAPPER_SQLSEGMENT), + String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, + WRAPPER_NONEMPTYOFNORMAL), true); + normalSqlScript += NEWLINE; + normalSqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), + String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, + WRAPPER_EMPTYOFNORMAL), true); + sqlScript += normalSqlScript; + sqlScript = SqlScriptUtils.convertChoose(String.format("%s != null", WRAPPER), sqlScript, + table.getLogicDeleteSql(false, true)); + sqlScript = SqlScriptUtils.convertWhere(sqlScript); + return newLine ? NEWLINE + sqlScript : sqlScript; + } else { + String sqlScript = SqlScriptUtils.convertIf(String.format("${%s}", WRAPPER_SQLSEGMENT), + String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, + WRAPPER_NONEMPTYOFWHERE), true); + sqlScript = SqlScriptUtils.convertWhere(sqlScript) + NEWLINE; + sqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), + String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, + WRAPPER_EMPTYOFWHERE), true); + sqlScript = SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", WRAPPER), true); + return newLine ? NEWLINE + sqlScript : sqlScript; + } + } + + + default String getLogicDeleteSql(TableInfo tableInfo, boolean startWithAnd, boolean isWhere) { + if (tableInfo.isWithLogicDelete()) { + String logicDeleteSql = formatLogicDeleteSql(tableInfo, isWhere); + if (startWithAnd) { + logicDeleteSql = " AND " + logicDeleteSql; + } + return logicDeleteSql; + } + return EMPTY; + } + + + default String formatLogicDeleteSql(TableInfo tableInfo, boolean isWhere) { + final String value = isWhere ? tableInfo.getLogicDeleteFieldInfo().getLogicNotDeleteValue() : + tableInfo.getLogicDeleteFieldInfo().getLogicDeleteValue(); + if (isWhere) { + if (NULL.equalsIgnoreCase(value)) { + return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + " IS NULL"; + } else { + return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS + String.format( + tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value); + } + } + final String targetStr = "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS; + if (NULL.equalsIgnoreCase(value)) { + return targetStr + NULL; + } else { + return targetStr + String.format(tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value); + } } } diff --git a/src/main/java/com/github/yulichang/method/mp/TableAlias.java b/src/main/java/com/github/yulichang/method/mp/TableAlias.java index 557880c..1b2fd6b 100644 --- a/src/main/java/com/github/yulichang/method/mp/TableAlias.java +++ b/src/main/java/com/github/yulichang/method/mp/TableAlias.java @@ -20,57 +20,5 @@ public interface TableAlias extends Constants, MPJBaseMethod { + SPACE + SqlScriptUtils.convertIf("${ew.from}", String.format("%s != null and %s and %s != null and %s != ''", Constant.PARAM_TYPE, Constant.PARAM_TYPE, "ew.from", "ew.from"), false); - - } - - default String mpjSqlWhereEntityWrapper(boolean newLine, TableInfo table) { - if (table.isWithLogicDelete()) { - String sqlScript = (NEWLINE + getLogicDeleteSql(table, true, true) + NEWLINE); - String normalSqlScript = SqlScriptUtils.convertIf(String.format("AND ${%s}", WRAPPER_SQLSEGMENT), - String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, - WRAPPER_NONEMPTYOFNORMAL), true); - normalSqlScript += NEWLINE; - normalSqlScript += SqlScriptUtils.convertIf(String.format(" ${%s}", WRAPPER_SQLSEGMENT), - String.format("%s != null and %s != '' and %s", WRAPPER_SQLSEGMENT, WRAPPER_SQLSEGMENT, - WRAPPER_EMPTYOFNORMAL), true); - sqlScript += normalSqlScript; - sqlScript = SqlScriptUtils.convertChoose(String.format("%s != null", WRAPPER), sqlScript, - table.getLogicDeleteSql(false, true)); - sqlScript = SqlScriptUtils.convertWhere(sqlScript); - return newLine ? NEWLINE + sqlScript : sqlScript; - } else { - return whereEntityWrapper(newLine); - } - } - - default String getLogicDeleteSql(TableInfo tableInfo, boolean startWithAnd, boolean isWhere) { - if (tableInfo.isWithLogicDelete()) { - String logicDeleteSql = formatLogicDeleteSql(tableInfo, isWhere); - if (startWithAnd) { - logicDeleteSql = " AND " + logicDeleteSql; - } - return logicDeleteSql; - } - return EMPTY; - } - - - default String formatLogicDeleteSql(TableInfo tableInfo, boolean isWhere) { - final String value = isWhere ? tableInfo.getLogicDeleteFieldInfo().getLogicNotDeleteValue() : - tableInfo.getLogicDeleteFieldInfo().getLogicDeleteValue(); - if (isWhere) { - if (NULL.equalsIgnoreCase(value)) { - return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + " IS NULL"; - } else { - return "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS + String.format( - tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value); - } - } - final String targetStr = "${ew.alias}." + tableInfo.getLogicDeleteFieldInfo().getColumn() + EQUALS; - if (NULL.equalsIgnoreCase(value)) { - return targetStr + NULL; - } else { - return targetStr + String.format(tableInfo.getLogicDeleteFieldInfo().isCharSequence() ? "'%s'" : "%s", value); - } } }