Skip to content

Commit 0f4935c

Browse files
author
hewei
committed
bug:增量插件重构时,对于没有配置增量列的model也错误的生成了增量相关字段
1 parent b7eda65 commit 0f4935c

File tree

1 file changed

+78
-76
lines changed

1 file changed

+78
-76
lines changed

src/main/java/com/itfsw/mybatis/generator/plugins/IncrementsPlugin.java

Lines changed: 78 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -157,81 +157,83 @@ public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(XmlElement e
157157
*/
158158
@Override
159159
public boolean modelBuilderClassGenerated(TopLevelClass topLevelClass, InnerClass builderClass, List<IntrospectedColumn> columns, IntrospectedTable introspectedTable) {
160-
// 增加枚举
161-
InnerEnum eIncrements = new InnerEnum(new FullyQualifiedJavaType("Inc"));
162-
eIncrements.setVisibility(JavaVisibility.PUBLIC);
163-
eIncrements.setStatic(true);
164-
eIncrements.addEnumConstant("INC(\"+\")");
165-
eIncrements.addEnumConstant("DEC(\"-\")");
166-
commentGenerator.addEnumComment(eIncrements, introspectedTable);
167-
// 生成属性和构造函数
168-
Field fValue = new Field("value", FullyQualifiedJavaType.getStringInstance());
169-
fValue.setVisibility(JavaVisibility.PRIVATE);
170-
fValue.setFinal(true);
171-
commentGenerator.addFieldComment(fValue, introspectedTable);
172-
eIncrements.addField(fValue);
173-
174-
Method mInc = new Method("Inc");
175-
mInc.setConstructor(true);
176-
mInc.addBodyLine("this.value = value;");
177-
mInc.addParameter(new Parameter(FullyQualifiedJavaType.getStringInstance(), "value"));
178-
commentGenerator.addGeneralMethodComment(mInc, introspectedTable);
179-
eIncrements.addMethod(mInc);
180-
181-
Method mValue = JavaElementGeneratorTools.generateGetterMethod(fValue);
182-
commentGenerator.addGeneralMethodComment(mValue, introspectedTable);
183-
eIncrements.addMethod(mValue);
184-
185-
builderClass.addInnerEnum(eIncrements);
186-
// 增加field
187-
Field fIncrements = JavaElementGeneratorTools.generateField(
188-
IncrementsPlugin.FIELD_INC_MAP,
189-
JavaVisibility.PROTECTED,
190-
new FullyQualifiedJavaType("Map<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">"),
191-
"new HashMap<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">()"
192-
);
193-
commentGenerator.addFieldComment(fIncrements, introspectedTable);
194-
topLevelClass.addField(fIncrements);
195-
topLevelClass.addImportedType("java.util.Map");
196-
topLevelClass.addImportedType("java.util.HashMap");
197-
// getter&setter
198-
Method mGetter = JavaElementGeneratorTools.generateGetterMethod(fIncrements);
199-
commentGenerator.addGetterComment(mGetter, introspectedTable, null);
200-
topLevelClass.addMethod(mGetter);
201-
Method mSetter = JavaElementGeneratorTools.generateSetterMethod(fIncrements);
202-
commentGenerator.addSetterComment(mSetter, introspectedTable, null);
203-
topLevelClass.addMethod(mSetter);
204-
// 增加判断方法
205-
Method mHasIncsForColumn = JavaElementGeneratorTools.generateMethod(
206-
IncrementsPlugin.METHOD_INC_CHECK,
207-
JavaVisibility.PUBLIC,
208-
FullyQualifiedJavaType.getBooleanPrimitiveInstance(),
209-
new Parameter(FullyQualifiedJavaType.getStringInstance(), "column")
210-
);
211-
commentGenerator.addGeneralMethodComment(mHasIncsForColumn, introspectedTable);
212-
mHasIncsForColumn.addBodyLine("return " + IncrementsPlugin.FIELD_INC_MAP + ".get(column) != null;");
213-
FormatTools.addMethodWithBestPosition(topLevelClass, mHasIncsForColumn);
214-
215-
// Builder 中 添加字段支持
216-
for (IntrospectedColumn column : columns) {
217-
if (incTools.supportColumn(column)) {
218-
Field field = JavaBeansUtil.getJavaBeansField(column, context, introspectedTable);
219-
// 增加方法
220-
Method mIncrements = JavaElementGeneratorTools.generateMethod(
221-
field.getName(),
222-
JavaVisibility.PUBLIC,
223-
builderClass.getType(),
224-
new Parameter(field.getType(), field.getName()),
225-
new Parameter(incTools.getIncEnum(), "inc")
226-
);
227-
commentGenerator.addSetterComment(mIncrements, introspectedTable, column);
228-
229-
Method setterMethod = JavaBeansUtil.getJavaBeansSetter(column, context, introspectedTable);
230-
mIncrements.addBodyLine("obj." + IncrementsPlugin.FIELD_INC_MAP + ".put(\"" + column.getActualColumnName() + "\", inc);");
231-
mIncrements.addBodyLine("obj." + setterMethod.getName() + "(" + field.getName() + ");");
232-
mIncrements.addBodyLine("return this;");
233-
234-
FormatTools.addMethodWithBestPosition(builderClass, mIncrements);
160+
if (incTools.support()) {
161+
// 增加枚举
162+
InnerEnum eIncrements = new InnerEnum(new FullyQualifiedJavaType("Inc"));
163+
eIncrements.setVisibility(JavaVisibility.PUBLIC);
164+
eIncrements.setStatic(true);
165+
eIncrements.addEnumConstant("INC(\"+\")");
166+
eIncrements.addEnumConstant("DEC(\"-\")");
167+
commentGenerator.addEnumComment(eIncrements, introspectedTable);
168+
// 生成属性和构造函数
169+
Field fValue = new Field("value", FullyQualifiedJavaType.getStringInstance());
170+
fValue.setVisibility(JavaVisibility.PRIVATE);
171+
fValue.setFinal(true);
172+
commentGenerator.addFieldComment(fValue, introspectedTable);
173+
eIncrements.addField(fValue);
174+
175+
Method mInc = new Method("Inc");
176+
mInc.setConstructor(true);
177+
mInc.addBodyLine("this.value = value;");
178+
mInc.addParameter(new Parameter(FullyQualifiedJavaType.getStringInstance(), "value"));
179+
commentGenerator.addGeneralMethodComment(mInc, introspectedTable);
180+
eIncrements.addMethod(mInc);
181+
182+
Method mValue = JavaElementGeneratorTools.generateGetterMethod(fValue);
183+
commentGenerator.addGeneralMethodComment(mValue, introspectedTable);
184+
eIncrements.addMethod(mValue);
185+
186+
builderClass.addInnerEnum(eIncrements);
187+
// 增加field
188+
Field fIncrements = JavaElementGeneratorTools.generateField(
189+
IncrementsPlugin.FIELD_INC_MAP,
190+
JavaVisibility.PROTECTED,
191+
new FullyQualifiedJavaType("Map<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">"),
192+
"new HashMap<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">()"
193+
);
194+
commentGenerator.addFieldComment(fIncrements, introspectedTable);
195+
topLevelClass.addField(fIncrements);
196+
topLevelClass.addImportedType("java.util.Map");
197+
topLevelClass.addImportedType("java.util.HashMap");
198+
// getter&setter
199+
Method mGetter = JavaElementGeneratorTools.generateGetterMethod(fIncrements);
200+
commentGenerator.addGetterComment(mGetter, introspectedTable, null);
201+
topLevelClass.addMethod(mGetter);
202+
Method mSetter = JavaElementGeneratorTools.generateSetterMethod(fIncrements);
203+
commentGenerator.addSetterComment(mSetter, introspectedTable, null);
204+
topLevelClass.addMethod(mSetter);
205+
// 增加判断方法
206+
Method mHasIncsForColumn = JavaElementGeneratorTools.generateMethod(
207+
IncrementsPlugin.METHOD_INC_CHECK,
208+
JavaVisibility.PUBLIC,
209+
FullyQualifiedJavaType.getBooleanPrimitiveInstance(),
210+
new Parameter(FullyQualifiedJavaType.getStringInstance(), "column")
211+
);
212+
commentGenerator.addGeneralMethodComment(mHasIncsForColumn, introspectedTable);
213+
mHasIncsForColumn.addBodyLine("return " + IncrementsPlugin.FIELD_INC_MAP + ".get(column) != null;");
214+
FormatTools.addMethodWithBestPosition(topLevelClass, mHasIncsForColumn);
215+
216+
// Builder 中 添加字段支持
217+
for (IntrospectedColumn column : columns) {
218+
if (incTools.supportColumn(column)) {
219+
Field field = JavaBeansUtil.getJavaBeansField(column, context, introspectedTable);
220+
// 增加方法
221+
Method mIncrements = JavaElementGeneratorTools.generateMethod(
222+
field.getName(),
223+
JavaVisibility.PUBLIC,
224+
builderClass.getType(),
225+
new Parameter(field.getType(), field.getName()),
226+
new Parameter(incTools.getIncEnum(), "inc")
227+
);
228+
commentGenerator.addSetterComment(mIncrements, introspectedTable, column);
229+
230+
Method setterMethod = JavaBeansUtil.getJavaBeansSetter(column, context, introspectedTable);
231+
mIncrements.addBodyLine("obj." + IncrementsPlugin.FIELD_INC_MAP + ".put(\"" + column.getActualColumnName() + "\", inc);");
232+
mIncrements.addBodyLine("obj." + setterMethod.getName() + "(" + field.getName() + ");");
233+
mIncrements.addBodyLine("return this;");
234+
235+
FormatTools.addMethodWithBestPosition(builderClass, mIncrements);
236+
}
235237
}
236238
}
237239
return true;
@@ -327,7 +329,7 @@ public Element incrementSetsWithSelectiveEnhancedPluginElementGenerated(Introspe
327329
sb.append("column.value");
328330

329331
when.addAttribute(new Attribute("test", sb.toString()));
330-
when.addElement(new TextElement("${column.value} = ${column.value} ${record.incrementsColumnsInfoMap."
332+
when.addElement(new TextElement("${column.value} = ${column.value} ${record." + FIELD_INC_MAP + "."
331333
+ introspectedColumn.getActualColumnName()
332334
+ ".value} #{record.${column.javaProperty},jdbcType=${column.jdbcType}}"));
333335
choose.addElement(when);

0 commit comments

Comments
 (0)