From 4d7e0eab85fadbc885e96c25de168809df53dd79 Mon Sep 17 00:00:00 2001 From: iqudoo Date: Tue, 21 Apr 2026 16:31:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=92=8C=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=EF=BC=8C=E4=BD=BF=E7=94=A8table=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-mybatis-generator-plugin-1.0-SNAPSHOT.jar | Bin 41037 -> 41277 bytes .../TapeRepositoryGeneratorPlugin.java | 127 ++++++++++-------- .../mybatis/TapeRepoviewGeneratorPlugin.java | 20 +-- 3 files changed, 82 insertions(+), 65 deletions(-) diff --git a/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar index dafd3913f8fd83bcbab41e69cd147ffc18afa67a..7f35abbe372f97f056ab8e4d9e2aba4e2a275489 100644 GIT binary patch delta 24333 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�me(~!z&i?tkS13V_H16aaR5;>ic|+b$ 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 diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java index ac3d821..e9c2fbb 100644 --- a/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java @@ -394,6 +394,8 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { IntrospectedTable introspectedTable, boolean hasBLOBColumns) { + String tableName = introspectedTable.getFullyQualifiedTable().getIntrospectedTableName(); + TopLevelClass implClass = new TopLevelClass(domainRepositoryPackage + "." + implClassName); implClass.setVisibility(JavaVisibility.PUBLIC); implClass.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")"); @@ -419,27 +421,27 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addField(mapperField); // 原有方法生成逻辑(无修改) - generateFindAnyByIdMethod(implClass, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); - generateFindValidByIdMethod(implClass, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); - generateFindTrashByIdMethod(implClass, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); - generateInsertMethod(implClass, introspectedTable, modelClassName, mapperFieldName); - generateBatchInsertMethod(implClass, introspectedTable, modelClassName, mapperFieldName); - generateUpdateMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); - generateUpdateByExampleSelectiveMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); - generateDeleteByIdMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateDeleteAllMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateTrashByIdMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateTrashAllMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateRecoverByIdMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateRecoverAllMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateFindValidOneMethod(implClass, modelClassName, exampleClassName); - generateFindTrashOneMethod(implClass, modelClassName, exampleClassName); - generateGetValidListMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); - generateGetTrashListMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); - generateCountByValidMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateCountByValidWithPageMethod(implClass, modelClassName, exampleClassName, mapperFieldName); - generateCountByTrashMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateCountByTrashWithPageMethod(implClass, modelClassName, exampleClassName, mapperFieldName); + generateFindAnyByIdMethod(implClass, tableName, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); + generateFindValidByIdMethod(implClass, tableName, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); + generateFindTrashByIdMethod(implClass, tableName, modelClassName, mapperFieldName, exampleClassName, hasBLOBColumns); + generateInsertMethod(implClass, tableName, introspectedTable, modelClassName, mapperFieldName); + generateBatchInsertMethod(implClass, tableName, introspectedTable, modelClassName, mapperFieldName); + generateUpdateMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateUpdateByExampleSelectiveMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateDeleteByIdMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateDeleteAllMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateTrashByIdMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateTrashAllMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateRecoverByIdMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateRecoverAllMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateFindValidOneMethod(implClass, tableName, modelClassName, exampleClassName); + generateFindTrashOneMethod(implClass, tableName, modelClassName, exampleClassName); + generateGetValidListMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateGetTrashListMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateCountByValidMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateCountByValidWithPageMethod(implClass, tableName, modelClassName, exampleClassName, mapperFieldName); + generateCountByTrashMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateCountByTrashWithPageMethod(implClass, tableName, modelClassName, exampleClassName, mapperFieldName); return implClass; } @@ -503,7 +505,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addImportedType(new FullyQualifiedJavaType("java.util.*")); } - private void generateFindAnyByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { + private void generateFindAnyByIdMethod(TopLevelClass implClass, String tableName, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { Method method = new Method("findAnyById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -528,7 +530,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateFindValidByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { + private void generateFindValidByIdMethod(TopLevelClass implClass, String tableName, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { Method method = new Method("findValidById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -554,7 +556,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateFindTrashByIdMethod(TopLevelClass implClass, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { + private void generateFindTrashByIdMethod(TopLevelClass implClass, String tableName, String modelClassName, String mapperFieldName, String exampleClassName, boolean hasBLOBColumns) { Method method = new Method("findTrashById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -580,7 +582,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateInsertMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String mapperFieldName) { + private void generateInsertMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String mapperFieldName) { Method method = new Method("insert"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -621,18 +623,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] insert " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); method.addBodyLine("if (count > 0) {"); - method.addBodyLine("// optimistic locking with data version and guid"); - method.addBodyLine("record.setGuid(aDo.getGuid());"); - method.addBodyLine("record.setDataVersion(aDo.getDataVersion());"); - method.addBodyLine("record.setCreateTime(aDo.getCreateTime());"); - method.addBodyLine("record.setUpdateTime(aDo.getUpdateTime());"); if (isChangeLogEnable(introspectedTable)) { - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"insert\", aDo.getGuid(), new HashMap<>());"); } method.addBodyLine("return aDo;"); @@ -641,7 +639,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateBatchInsertMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String mapperFieldName) { + private void generateBatchInsertMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String mapperFieldName) { Method method = new Method("batchInsert"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -688,6 +686,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] batch insert " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); @@ -695,7 +694,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("if (count == batch.size()) {"); if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("for (" + modelClassName + " aDo : batch) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"batchInsert\", aDo.getGuid(), new HashMap<>());"); method.addBodyLine("}"); } @@ -706,7 +705,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateUpdateMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, + private void generateUpdateMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { Method method = new Method("update"); method.addAnnotation("@Override"); @@ -766,13 +765,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] update " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0 && !changeDiff.isEmpty()) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"update\", aDo.getGuid(), changeDiff);"); method.addBodyLine("}"); } @@ -780,7 +780,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateUpdateByExampleSelectiveMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, + private void generateUpdateByExampleSelectiveMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { Method method = new Method("updateByExampleSelective"); method.addAnnotation("@Override"); @@ -847,6 +847,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] updateByExampleSelective " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -856,7 +857,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("if (update > 0) {"); method.addBodyLine("for (Map.Entry> diffEntry : diffGroup.entrySet()) {"); method.addBodyLine("if (diffEntry.getValue() != null && !diffEntry.getValue().isEmpty()) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"updateByExampleSelective\", diffEntry.getKey(), diffEntry.getValue());"); method.addBodyLine("}"); method.addBodyLine("}"); @@ -866,7 +867,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateDeleteByIdMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateDeleteByIdMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("deleteById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -901,13 +902,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] deleteById " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"deleteById\", aDo.getGuid(), new HashMap<>());"); method.addBodyLine("}"); } @@ -915,7 +917,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateTrashByIdMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateTrashByIdMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("trashById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -949,13 +951,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] trashById " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"trashById\", aDo.getGuid(), new HashMap<>());"); method.addBodyLine("}"); } @@ -963,7 +966,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateRecoverByIdMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateRecoverByIdMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("recoverById"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -999,13 +1002,14 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] recoverById " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"recoverById\", aDo.getGuid(), new HashMap<>());"); method.addBodyLine("}"); } @@ -1013,7 +1017,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateDeleteAllMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateDeleteAllMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("deleteAll"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1050,6 +1054,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] deleteAll " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); @@ -1057,7 +1062,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); method.addBodyLine("for (Long guid : guidList) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"deleteAll\", guid, new HashMap<>());"); method.addBodyLine("}"); method.addBodyLine("}"); @@ -1066,7 +1071,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateTrashAllMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateTrashAllMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("trashAll"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1100,6 +1105,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] trashAll " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); @@ -1107,7 +1113,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); method.addBodyLine("for (Long guid : guidList) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"trashAll\", guid, new HashMap<>());"); method.addBodyLine("}"); method.addBodyLine("}"); @@ -1116,7 +1122,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateRecoverAllMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateRecoverAllMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("recoverAll"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1150,6 +1156,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + getSlowQueryLoggerTime(introspectedTable) + ") {"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] recoverAll " + modelClassName + " long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); @@ -1157,7 +1164,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { if (isChangeLogEnable(introspectedTable)) { method.addBodyLine("if (update > 0) {"); method.addBodyLine("for (Long guid : guidList) {"); - method.addBodyLine(changeLogContextClassName + ".addLog(\"" + modelClassName + "\","); + method.addBodyLine(changeLogContextClassName + ".addLog(\"" + tableName + "\","); method.addBodyLine(" \"recoverAll\", guid, new HashMap<>());"); method.addBodyLine("}"); method.addBodyLine("}"); @@ -1167,7 +1174,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateFindValidOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + private void generateFindValidOneMethod(TopLevelClass implClass, String tableName, String modelClassName, String exampleClassName) { Method method = new Method("findValidOne"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1187,7 +1194,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateFindTrashOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + private void generateFindTrashOneMethod(TopLevelClass implClass, String tableName, String modelClassName, String exampleClassName) { Method method = new Method("findTrashOne"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1207,7 +1214,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateGetValidListMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, + private void generateGetValidListMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { Method method = new Method("getValidList"); method.addAnnotation("@Override"); @@ -1242,6 +1249,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> limit: \" + example.getLimitString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " valid list primary key long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + findPrimaryKeyTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1277,6 +1285,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> limit: \" + example.getLimitString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " valid list long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1286,7 +1295,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateGetTrashListMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, + private void generateGetTrashListMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { Method method = new Method("getTrashList"); method.addAnnotation("@Override"); @@ -1321,6 +1330,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> limit: \" + example.getLimitString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " trash list primary key long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + findPrimaryKeyTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1356,6 +1366,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> limit: \" + example.getLimitString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " trash list long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1365,7 +1376,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateCountByValidMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateCountByValidMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("countByValid"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1390,6 +1401,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " valid count long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1400,7 +1412,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateCountByValidWithPageMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateCountByValidWithPageMethod(TopLevelClass implClass, String tableName, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("countByValidWithPage"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1417,7 +1429,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateCountByTrashMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateCountByTrashMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("countByTrash"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -1442,6 +1454,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " trash count long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -1452,7 +1465,7 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { implClass.addMethod(method); } - private void generateCountByTrashWithPageMethod(TopLevelClass implClass, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateCountByTrashWithPageMethod(TopLevelClass implClass, String tableName, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("countByTrashWithPage"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java index 39eccdd..0e5fbe1 100644 --- a/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java @@ -212,6 +212,8 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { boolean hasBLOBColumns ) { + String tableName = introspectedTable.getFullyQualifiedTable().getIntrospectedTableName(); + TopLevelClass implClass = new TopLevelClass(domainViewRepositoryPackage + "." + implClassName); implClass.setVisibility(JavaVisibility.PUBLIC); implClass.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")"); @@ -239,10 +241,10 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { mapperField.addAnnotation("@Resource"); implClass.addField(mapperField); - generateFindOneMethod(implClass, modelClassName, exampleClassName); - generateGetListMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); - generateCountMethod(implClass, introspectedTable, modelClassName, exampleClassName, mapperFieldName); - generateCountWithPageMethod(implClass, exampleClassName); + generateFindOneMethod(implClass, tableName, modelClassName, exampleClassName); + generateGetListMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName, hasBLOBColumns); + generateCountMethod(implClass, tableName, introspectedTable, modelClassName, exampleClassName, mapperFieldName); + generateCountWithPageMethod(implClass, tableName, exampleClassName); return implClass; } @@ -270,7 +272,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { /** * 生成findOne方法 */ - private void generateFindOneMethod(TopLevelClass implClass, String modelClassName, String exampleClassName) { + private void generateFindOneMethod(TopLevelClass implClass, String tableName, String modelClassName, String exampleClassName) { Method method = new Method("findOne"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -295,7 +297,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { /** * 生成getList方法 */ - private void generateGetListMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { + private void generateGetListMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName, boolean hasBLOBColumns) { Method method = new Method("getList"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -330,6 +332,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> limit: \" + example.getLimitString();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " view list long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -342,7 +345,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { /** * 生成count方法 */ - private void generateCountMethod(TopLevelClass implClass, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { + private void generateCountMethod(TopLevelClass implClass, String tableName, IntrospectedTable introspectedTable, String modelClassName, String exampleClassName, String mapperFieldName) { Method method = new Method("count"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC); @@ -366,6 +369,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); method.addBodyLine("}"); method.addBodyLine("LOGGER." + getSlowQueryLoggerLevel(introspectedTable) + "(\"[SQL] select " + modelClassName + " view count long time\" +"); + method.addBodyLine(" \"\\n\\t|-> table name: " + tableName + "\" +"); method.addBodyLine(" \"\\n\\t|-> use time: \" + useTime + \"ms\" +"); method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); @@ -379,7 +383,7 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { /** * 生成count方法 */ - private void generateCountWithPageMethod(TopLevelClass implClass, String exampleClassName) { + private void generateCountWithPageMethod(TopLevelClass implClass, String tableName, String exampleClassName) { Method method = new Method("countWithPage"); method.addAnnotation("@Override"); method.setVisibility(JavaVisibility.PUBLIC);