diff --git a/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar index 966cf0d..85d1e2a 100644 Binary files a/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar and b/releases/tape-mybatis-generator-plugin-1.0-SNAPSHOT.jar differ 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("}");