Comment From: cheng-qiang
比如controller 在一个目录下,service在另外一个目录,以此类推,现在是能在同一个目录下不同包下,我看默认配置了全局目录,能否把这个配置关闭掉,然后.pathInfo(Collections.singletonMap(OutputFile.entity,..........自定义输出地址,否则只能在同一个目录下,这样自定义输出地址会失效,是不是不合理。
Comment From: qclucky7
这种需求的话感觉用双亲委派机制可以在当前类路径下覆盖AbstractTemplateEngine这个类, 重写它输入目录位置就行了。
https://github.com/baomidou/mybatis-plus/blob/820507fcf33db3d94046706a9b731e71a4c58398/mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/AbstractTemplateEngine.java#L46
我使用高版本它代码生成器自定义文件输出也会多拼接实体,我暂时重写的这个类解决的。
Comment From: cheng-qiang
使用的这个版本:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
自动生成配置:
package com.yiwannuofulasi.config;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.ibatis.annotations.Mapper;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class GeneratorConfig {
public static void main(String[] args) {
List<String> tables = new ArrayList<>();
tables.add("oauth_client_details");
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/ddd-cola-anatomy?characterEncoding=UTF-8&useSSL=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai","root","root")
.globalConfig(builder -> builder.author("坚持是一种技术")
.outputDir(System.getProperty("user.dir")+"\\ddd-cola-anatomy\\ddd-infrastructure\\src\\main\\java")
.enableSwagger()
.commentDate("yyyy-MM-dd"))
.packageConfig(builder -> builder.parent("com.yiwannuofulasi")
.moduleName("oauth")
.entity("entity")
.mapper("mapper")
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.xml,
System.getProperty("user.dir")+"\\ddd-cola-anatomy\\ddd-infrastructure\\src\\main\\java\\com\\yiwannuofulasi\\oauth\\mapper")))
.strategyConfig(builder -> {
builder.addInclude(tables)
.serviceBuilder()
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()
.enableFileOverride()
.enableLombok()
.logicDeleteColumnName("deleted")
.enableTableFieldAnnotation()
.controllerBuilder()
.enableHyphenStyle()
.formatFileName("%sController")
.enableRestStyle()
.mapperBuilder()
.enableBaseResultMap()
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper")
.mapperAnnotation(Mapper.class)
.enableFileOverride();
})
.templateConfig(builder -> {
builder.entity("templates/CustomizedEntity.java");
})
.templateEngine(new FreemarkerTemplateEngine())
.templateConfig(builder -> builder.controller(""))
.execute();
}
}
需求效果
Comment From: qmdx
请关注 3.5.3.2 版本发布 https://github.com/baomidou/mybatis-plus/commit/8734845fe352d6c179a422c805fdf62e49f6c2af 支持如下
public void testOutputFile() {
AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
generator.strategy(strategyConfig().outputFile(((filePath, outputFile) -> {
File file = new File(filePath);
if(outputFile == OutputFile.controller) {
// 调整输出路径为当前目录
return new File("." + File.separator + file.getName());
}
return file;
})).build());
generator.execute();
}