Commit 0f4935c7 authored by hewei's avatar hewei

bug:增量插件重构时,对于没有配置增量列的model也错误的生成了增量相关字段

parent b7eda65b
...@@ -157,81 +157,83 @@ public class IncrementsPlugin extends BasePlugin implements IModelBuilderPluginH ...@@ -157,81 +157,83 @@ public class IncrementsPlugin extends BasePlugin implements IModelBuilderPluginH
*/ */
@Override @Override
public boolean modelBuilderClassGenerated(TopLevelClass topLevelClass, InnerClass builderClass, List<IntrospectedColumn> columns, IntrospectedTable introspectedTable) { public boolean modelBuilderClassGenerated(TopLevelClass topLevelClass, InnerClass builderClass, List<IntrospectedColumn> columns, IntrospectedTable introspectedTable) {
// 增加枚举 if (incTools.support()) {
InnerEnum eIncrements = new InnerEnum(new FullyQualifiedJavaType("Inc")); // 增加枚举
eIncrements.setVisibility(JavaVisibility.PUBLIC); InnerEnum eIncrements = new InnerEnum(new FullyQualifiedJavaType("Inc"));
eIncrements.setStatic(true); eIncrements.setVisibility(JavaVisibility.PUBLIC);
eIncrements.addEnumConstant("INC(\"+\")"); eIncrements.setStatic(true);
eIncrements.addEnumConstant("DEC(\"-\")"); eIncrements.addEnumConstant("INC(\"+\")");
commentGenerator.addEnumComment(eIncrements, introspectedTable); eIncrements.addEnumConstant("DEC(\"-\")");
// 生成属性和构造函数 commentGenerator.addEnumComment(eIncrements, introspectedTable);
Field fValue = new Field("value", FullyQualifiedJavaType.getStringInstance()); // 生成属性和构造函数
fValue.setVisibility(JavaVisibility.PRIVATE); Field fValue = new Field("value", FullyQualifiedJavaType.getStringInstance());
fValue.setFinal(true); fValue.setVisibility(JavaVisibility.PRIVATE);
commentGenerator.addFieldComment(fValue, introspectedTable); fValue.setFinal(true);
eIncrements.addField(fValue); commentGenerator.addFieldComment(fValue, introspectedTable);
eIncrements.addField(fValue);
Method mInc = new Method("Inc");
mInc.setConstructor(true); Method mInc = new Method("Inc");
mInc.addBodyLine("this.value = value;"); mInc.setConstructor(true);
mInc.addParameter(new Parameter(FullyQualifiedJavaType.getStringInstance(), "value")); mInc.addBodyLine("this.value = value;");
commentGenerator.addGeneralMethodComment(mInc, introspectedTable); mInc.addParameter(new Parameter(FullyQualifiedJavaType.getStringInstance(), "value"));
eIncrements.addMethod(mInc); commentGenerator.addGeneralMethodComment(mInc, introspectedTable);
eIncrements.addMethod(mInc);
Method mValue = JavaElementGeneratorTools.generateGetterMethod(fValue);
commentGenerator.addGeneralMethodComment(mValue, introspectedTable); Method mValue = JavaElementGeneratorTools.generateGetterMethod(fValue);
eIncrements.addMethod(mValue); commentGenerator.addGeneralMethodComment(mValue, introspectedTable);
eIncrements.addMethod(mValue);
builderClass.addInnerEnum(eIncrements);
// 增加field builderClass.addInnerEnum(eIncrements);
Field fIncrements = JavaElementGeneratorTools.generateField( // 增加field
IncrementsPlugin.FIELD_INC_MAP, Field fIncrements = JavaElementGeneratorTools.generateField(
JavaVisibility.PROTECTED, IncrementsPlugin.FIELD_INC_MAP,
new FullyQualifiedJavaType("Map<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">"), JavaVisibility.PROTECTED,
"new HashMap<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">()" new FullyQualifiedJavaType("Map<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">"),
); "new HashMap<String, " + incTools.getIncEnum().getFullyQualifiedName() + ">()"
commentGenerator.addFieldComment(fIncrements, introspectedTable); );
topLevelClass.addField(fIncrements); commentGenerator.addFieldComment(fIncrements, introspectedTable);
topLevelClass.addImportedType("java.util.Map"); topLevelClass.addField(fIncrements);
topLevelClass.addImportedType("java.util.HashMap"); topLevelClass.addImportedType("java.util.Map");
// getter&setter topLevelClass.addImportedType("java.util.HashMap");
Method mGetter = JavaElementGeneratorTools.generateGetterMethod(fIncrements); // getter&setter
commentGenerator.addGetterComment(mGetter, introspectedTable, null); Method mGetter = JavaElementGeneratorTools.generateGetterMethod(fIncrements);
topLevelClass.addMethod(mGetter); commentGenerator.addGetterComment(mGetter, introspectedTable, null);
Method mSetter = JavaElementGeneratorTools.generateSetterMethod(fIncrements); topLevelClass.addMethod(mGetter);
commentGenerator.addSetterComment(mSetter, introspectedTable, null); Method mSetter = JavaElementGeneratorTools.generateSetterMethod(fIncrements);
topLevelClass.addMethod(mSetter); commentGenerator.addSetterComment(mSetter, introspectedTable, null);
// 增加判断方法 topLevelClass.addMethod(mSetter);
Method mHasIncsForColumn = JavaElementGeneratorTools.generateMethod( // 增加判断方法
IncrementsPlugin.METHOD_INC_CHECK, Method mHasIncsForColumn = JavaElementGeneratorTools.generateMethod(
JavaVisibility.PUBLIC, IncrementsPlugin.METHOD_INC_CHECK,
FullyQualifiedJavaType.getBooleanPrimitiveInstance(), JavaVisibility.PUBLIC,
new Parameter(FullyQualifiedJavaType.getStringInstance(), "column") FullyQualifiedJavaType.getBooleanPrimitiveInstance(),
); new Parameter(FullyQualifiedJavaType.getStringInstance(), "column")
commentGenerator.addGeneralMethodComment(mHasIncsForColumn, introspectedTable); );
mHasIncsForColumn.addBodyLine("return " + IncrementsPlugin.FIELD_INC_MAP + ".get(column) != null;"); commentGenerator.addGeneralMethodComment(mHasIncsForColumn, introspectedTable);
FormatTools.addMethodWithBestPosition(topLevelClass, mHasIncsForColumn); mHasIncsForColumn.addBodyLine("return " + IncrementsPlugin.FIELD_INC_MAP + ".get(column) != null;");
FormatTools.addMethodWithBestPosition(topLevelClass, mHasIncsForColumn);
// Builder 中 添加字段支持
for (IntrospectedColumn column : columns) { // Builder 中 添加字段支持
if (incTools.supportColumn(column)) { for (IntrospectedColumn column : columns) {
Field field = JavaBeansUtil.getJavaBeansField(column, context, introspectedTable); if (incTools.supportColumn(column)) {
// 增加方法 Field field = JavaBeansUtil.getJavaBeansField(column, context, introspectedTable);
Method mIncrements = JavaElementGeneratorTools.generateMethod( // 增加方法
field.getName(), Method mIncrements = JavaElementGeneratorTools.generateMethod(
JavaVisibility.PUBLIC, field.getName(),
builderClass.getType(), JavaVisibility.PUBLIC,
new Parameter(field.getType(), field.getName()), builderClass.getType(),
new Parameter(incTools.getIncEnum(), "inc") new Parameter(field.getType(), field.getName()),
); new Parameter(incTools.getIncEnum(), "inc")
commentGenerator.addSetterComment(mIncrements, introspectedTable, column); );
commentGenerator.addSetterComment(mIncrements, introspectedTable, column);
Method setterMethod = JavaBeansUtil.getJavaBeansSetter(column, context, introspectedTable);
mIncrements.addBodyLine("obj." + IncrementsPlugin.FIELD_INC_MAP + ".put(\"" + column.getActualColumnName() + "\", inc);"); Method setterMethod = JavaBeansUtil.getJavaBeansSetter(column, context, introspectedTable);
mIncrements.addBodyLine("obj." + setterMethod.getName() + "(" + field.getName() + ");"); mIncrements.addBodyLine("obj." + IncrementsPlugin.FIELD_INC_MAP + ".put(\"" + column.getActualColumnName() + "\", inc);");
mIncrements.addBodyLine("return this;"); mIncrements.addBodyLine("obj." + setterMethod.getName() + "(" + field.getName() + ");");
mIncrements.addBodyLine("return this;");
FormatTools.addMethodWithBestPosition(builderClass, mIncrements);
FormatTools.addMethodWithBestPosition(builderClass, mIncrements);
}
} }
} }
return true; return true;
...@@ -327,7 +329,7 @@ public class IncrementsPlugin extends BasePlugin implements IModelBuilderPluginH ...@@ -327,7 +329,7 @@ public class IncrementsPlugin extends BasePlugin implements IModelBuilderPluginH
sb.append("column.value"); sb.append("column.value");
when.addAttribute(new Attribute("test", sb.toString())); when.addAttribute(new Attribute("test", sb.toString()));
when.addElement(new TextElement("${column.value} = ${column.value} ${record.incrementsColumnsInfoMap." when.addElement(new TextElement("${column.value} = ${column.value} ${record." + FIELD_INC_MAP + "."
+ introspectedColumn.getActualColumnName() + introspectedColumn.getActualColumnName()
+ ".value} #{record.${column.javaProperty},jdbcType=${column.jdbcType}}")); + ".value} #{record.${column.javaProperty},jdbcType=${column.jdbcType}}"));
choose.addElement(when); choose.addElement(when);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment