package com.witwicky.plugins; import org.mybatis.generator.api.GeneratedJavaFile; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.DefaultJavaFormatter; import org.mybatis.generator.api.dom.java.JavaVisibility; import org.mybatis.generator.api.dom.java.TopLevelClass; import java.util.Collections; import java.util.List; public class GenQueryVoPlugin extends PluginAdapter { public GenQueryVoPlugin() { super(); } public boolean validate(List<String> warnings) { return true; } @Override public List<GeneratedJavaFile> contextGenerateAdditionalJavaFiles(IntrospectedTable introspectedTable) { String queryVoName = introspectedTable.getFullyQualifiedTable().getDomainObjectName(); String model = context.getJavaModelGeneratorConfiguration().getTargetPackage(); String querVoPkgName = properties.getProperty("QUERVO_PKG_NAME", "queryvo"); String queryVo = join(model.substring(0, model.lastIndexOf(".")), querVoPkgName); String querVoSuffix = properties.getProperty("QUERVO_VO_SUFFIX", "Vo"); TopLevelClass root = new TopLevelClass(join(queryVo, queryVoName + querVoSuffix)); root.addImportedType(model + "." + queryVoName); root.setSuperClass(queryVoName); root.setVisibility(JavaVisibility.PUBLIC); String targetProject = context.getJavaClientGeneratorConfiguration().getTargetProject(); GeneratedJavaFile gjf = new GeneratedJavaFile(root, targetProject, "UTF-8", new DefaultJavaFormatter()); return Collections.singletonList(gjf); } private String join(String... strs) { StringBuilder sb = new StringBuilder(); for (String str : strs) { sb.append(str).append("."); } return sb.deleteCharAt(sb.length() - 1).toString(); } }