Ja, aber Sie müssen wahrscheinlich einen benutzerdefinierten javaClientGenerator erstellen. Ich glaube nicht, dass die Eigenschaft enableSubPackages so funktioniert. In Ihrer Konfigurationsdatei würden Sie haben:
<javaClientGenerator type="com.mydomain.MyJavaMapperGenerator" targetPackage="com.aaa.${module}.domain.mapper" targetProject="src/main/java">
</javaClientGenerator>
Und dann würden Sie müssen den vorhandenen JavaMapperGenerator mit Ihrer eigenen Version zu Unterklasse. Etwas wie Option 1 oder 2 unten. Option 2 ist diejenige, die ich wahrscheinlich mit der unerwarteten Komplexität von Option 1 gehen würde.
Option 1- Was dies schwierig macht, ist der Mapper-Typ in einer privaten Variable gespeichert ist, so dass Sie ein ganz neue Schnittstelle Objekt der Werte über die ursprüngliche Kopieren erstellen haben:
public class MyJavaMapperGenerator extends JavaMapperGenerator {
@Override
public List<CompilationUnit> getCompilationUnits() {
List<CompilationUnit> compliationUnits = super.getCompilationUnits();
List<CompilationUnit> newCompliationUnits = new ArrayList<>();
Interface mapper = (Interface)compliationUnits.get(0);
String mapperType = mapper.getType().getFullyQualifiedName();
Interface newMapper = new Interface(mapperType.replace("${module}",
introspectedTable.getFullyQualifiedTable().getDomainObjectName().toLowerCase()));
newMapper.getJavaDocLines().addAll(mapper.getJavaDocLines());
newMapper.setVisibility(mapper.getVisibility());
newMapper.setStatic(mapper.isStatic());
newMapper.setFinal(mapper.isFinal());
newMapper.getAnnotations().addAll(mapper.getAnnotations());
newMapper.addImportedTypes(mapper.getImportedTypes());
newMapper.getStaticImports().addAll(mapper.getStaticImports());
newMapper.getSuperInterfaceTypes().addAll(mapper.getSuperInterfaceTypes());
newMapper.getMethods().addAll(mapper.getMethods());
newMapper.getFileCommentLines().addAll(mapper.getFileCommentLines());
newCompliationUnits.add(newMapper);
return newCompliationUnits;
}
}
Option 2- Obwohl es ein wenig chaotisch ist, würde ich wahrscheinlich die ganzen getCompilationsUnits() -Methode von JavaMapperGenerator copy-paste und die einzige Zeile ändern, die den Typen setzt:
public class MyJavaMapperGenerator extends JavaMapperGenerator {
@Override
public List<CompilationUnit> getCompilationUnits() {
...
//FullyQualifiedJavaType type = new FullyQualifiedJavaType(
// introspectedTable.getMyBatis3JavaMapperType());
FullyQualifiedJavaType type = new FullyQualifiedJavaType(
introspectedTable.getMyBatis3JavaMapperType().replace("${module}",
introspectedTable.getFullyQualifiedTable().getDomainObjectName()
.toLowerCase()));
...
}
}