From 6ecdf66eeb5b5380b53df62a3ad57f3d4e71a137 Mon Sep 17 00:00:00 2001 From: iqudoo Date: Sun, 12 Apr 2026 16:24:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-mybatis-generator-plugin-1.0-SNAPSHOT.jar | Bin 33976 -> 35032 bytes .../mybatis/TapeMybatisGeneratorPlugin.java | 85 ++++++++++++++---- .../TapeRepositoryGeneratorPlugin.java | 78 ++++++++++++---- .../mybatis/TapeRepoviewGeneratorPlugin.java | 26 ++++-- 4 files changed, 149 insertions(+), 40 deletions(-) diff --git a/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar index 966cf0dd8c22de89214f16ee1f9c8aedfe79ebd8..85d1e2a29fc7a184187750a02e5380b2b0621424 100644 GIT binary patch delta 26112 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 E11u88A^-pY delta 25054 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 diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java index 0b69364..9774a23 100644 --- a/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeMybatisGeneratorPlugin.java @@ -56,12 +56,14 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { @SuppressWarnings("DuplicatedCode") @Override public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { - PrimitiveTypeWrapper integerWrapper = FullyQualifiedJavaType.getIntInstance().getPrimitiveTypeWrapper(); + FullyQualifiedJavaType integerType = new FullyQualifiedJavaType("java.lang.Integer"); + FullyQualifiedJavaType booleanType = new FullyQualifiedJavaType("java.lang.Boolean"); + FullyQualifiedJavaType stringType = new FullyQualifiedJavaType("java.lang.String"); // 添加 startPageNum、maxPageSize、ignorePageSize 字段 Field maxPageSizeField = ElementTools.generateField( "maxPageSize", JavaVisibility.PROTECTED, - integerWrapper, + integerType, this.maxPageSize + "" ); topLevelClass.addField(maxPageSizeField); @@ -69,7 +71,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Field ignorePageSizeField = ElementTools.generateField( "ignorePageSize", JavaVisibility.PROTECTED, - integerWrapper, + integerType, this.ignorePageSize + "" ); topLevelClass.addField(ignorePageSizeField); @@ -77,7 +79,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Field startPageNumField = ElementTools.generateField( "startPageNum", JavaVisibility.PROTECTED, - integerWrapper, + integerType, startPageNum + "" ); topLevelClass.addField(startPageNumField); @@ -86,7 +88,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Field offsetField = ElementTools.generateField( "offset", JavaVisibility.PROTECTED, - integerWrapper, + integerType, "null" ); topLevelClass.addField(offsetField); @@ -94,7 +96,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Field rowsField = ElementTools.generateField( "rows", JavaVisibility.PROTECTED, - integerWrapper, + integerType, "null" ); topLevelClass.addField(rowsField); @@ -105,7 +107,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Field withBLOBsField = ElementTools.generateField( "withBLOBs", JavaVisibility.PROTECTED, - new FullyQualifiedJavaType("java.lang.Boolean"), + booleanType, "true" ); topLevelClass.addField(withBLOBsField); @@ -142,7 +144,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { "limit", JavaVisibility.PUBLIC, topLevelClass.getType(), - new Parameter(integerWrapper, "rows") + new Parameter(integerType, "rows") ); setLimitByRows = ElementTools.generateMethodBody( setLimitByRows, @@ -156,8 +158,8 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { "limit", JavaVisibility.PUBLIC, topLevelClass.getType(), - new Parameter(integerWrapper, "offset"), - new Parameter(integerWrapper, "rows") + new Parameter(integerType, "offset"), + new Parameter(integerType, "rows") ); setLimitByOffsetRows = ElementTools.generateMethodBody( setLimitByOffsetRows, @@ -171,8 +173,8 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { "usePage", JavaVisibility.PUBLIC, topLevelClass.getType(), - new Parameter(integerWrapper, "pageNum"), - new Parameter(integerWrapper, "pageSize") + new Parameter(integerType, "pageNum"), + new Parameter(integerType, "pageSize") ); usePage = ElementTools.generateMethodBody( usePage, @@ -194,7 +196,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Method getPageNum = ElementTools.generateMethod( "getPageNum", JavaVisibility.PUBLIC, - integerWrapper + integerType ); getPageNum = ElementTools.generateMethodBody( getPageNum, @@ -208,7 +210,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Method getPageSize = ElementTools.generateMethod( "getPageSize", JavaVisibility.PUBLIC, - integerWrapper + integerType ); getPageSize = ElementTools.generateMethodBody( getPageSize, @@ -222,7 +224,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Method getRows = ElementTools.generateMethod( "getRows", JavaVisibility.PUBLIC, - integerWrapper + integerType ); getRows = ElementTools.generateMethodBody( getRows, @@ -233,7 +235,7 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { Method getOffset = ElementTools.generateMethod( "getOffset", JavaVisibility.PUBLIC, - integerWrapper + integerType ); getOffset = ElementTools.generateMethodBody( getOffset, @@ -241,14 +243,65 @@ public class TapeMybatisGeneratorPlugin extends PluginAdapter { ); FormatTools.addMethodWithBestPosition(topLevelClass, getOffset); + Method getWhereString = ElementTools.generateMethod( + "getWhereString", + JavaVisibility.PUBLIC, + stringType + ); + getWhereString.addAnnotation("@SuppressWarnings(\"DuplicatedCode\")"); + getWhereString = ElementTools.generateMethodBody( + getWhereString, + "if (getOredCriteria() != null) {", + "List whereGroup = new ArrayList<>();", + "for (Criteria criteria : getOredCriteria()) {", + "List criterionList = new ArrayList<>();", + "for (Criterion criterion : criteria.getAllCriteria()) {", + "if (criterion.isNoValue()) {", + "criterionList.add(criterion.getCondition());", + "} else if (criterion.isBetweenValue()) {", + "criterionList.add(criterion.getCondition() + \" \" + criterion.getValue() + \",\" + criterion.getSecondValue());", + "} else {", + "criterionList.add(criterion.getCondition() + \" \" + criterion.getValue());", + "}", + "}", + "whereGroup.add(String.join(\" and \", criterionList));", + "}", + "if (whereGroup.size() > 1) {", + "List mapWhereGroup = new ArrayList<>();", + "for (String where : whereGroup) {", + "mapWhereGroup.add(\"(\" + where + \")\");", + "}", + "whereGroup = mapWhereGroup;", + "}", + "return String.join(\" or \", whereGroup);", + "}", + "return null;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, getWhereString); + // !!! clear 方法增加 offset 和 rows的清理 + boolean hasClear = false; List methodList = topLevelClass.getMethods(); for (Method method : methodList) { if (method.getName().equals("clear")) { method.addBodyLine("rows = null;"); method.addBodyLine("offset = null;"); + hasClear = true; } } + if (!hasClear) { + Method clear = ElementTools.generateMethod( + "clear", + JavaVisibility.PUBLIC, + new FullyQualifiedJavaType("void") + ); + clear = ElementTools.generateMethodBody( + clear, + "rows = null;", + "offset = null;" + ); + FormatTools.addMethodWithBestPosition(topLevelClass, clear); + } return true; } diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java index 77f5541..ca3ac23 100644 --- a/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepositoryGeneratorPlugin.java @@ -832,9 +832,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("}"); method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;"); method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list primary key use long time: \" + findPrimaryKeyTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list primary key use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + findPrimaryKeyTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -857,9 +864,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { } method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid list use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -889,9 +903,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("}"); method.addBodyLine("long findPrimaryKeyTime = new Date().getTime() - startTime;"); method.addBodyLine("if (findPrimaryKeyTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list primary key use long time: \" + findPrimaryKeyTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list primary key use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + findPrimaryKeyTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -914,9 +935,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { } method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash list use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -939,9 +967,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid count use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " valid count use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -982,9 +1017,16 @@ public class TapeRepositoryGeneratorPlugin extends PluginAdapter { method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash count use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " trash count use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); diff --git a/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java index 48a901e..d92ea7f 100644 --- a/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java +++ b/src/main/java/com/iqudoo/framework/mybatis/TapeRepoviewGeneratorPlugin.java @@ -313,9 +313,16 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { } method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view list use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view list use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}"); @@ -340,9 +347,16 @@ public class TapeRepoviewGeneratorPlugin extends PluginAdapter { method.addBodyLine("long count = " + mapperFieldName + ".countByExample(example);"); method.addBodyLine("long useTime = new Date().getTime() - startTime;"); method.addBodyLine("if (useTime > " + slowQueryLoggerTime + ") {"); - method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view count use long time: \" + useTime + \"ms\" +"); - method.addBodyLine(" \"\\n\\t|-> criteria: \" + example.getOredCriteria() +"); - method.addBodyLine(" \"\\n\\t|-> order by: \" + example.getOrderByClause() +"); + method.addBodyLine("String exampleString = \"\";"); + method.addBodyLine("if (example.getWhereString() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> where: \" + example.getWhereString();"); + method.addBodyLine("}"); + method.addBodyLine("if (example.getOrderByClause() != null) {"); + method.addBodyLine("exampleString += \"\\n\\t|-> order by: \" + example.getOrderByClause();"); + method.addBodyLine("}"); + method.addBodyLine("LOGGER." + slowQueryLoggerLevel + "(\"Select " + modelClassName + " view count use long time\" +"); + method.addBodyLine(" \"\\n\\t|-> time:\" + useTime + \"ms\" +"); + method.addBodyLine(" exampleString +"); method.addBodyLine(" \"\\n\\t|-----------------------------------\""); method.addBodyLine(");"); method.addBodyLine("}");