import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.example.shop.entity.BaseEntity;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class AutoCode {
public static void main(String[] args) {
AutoEntity auto = new AutoEntity();
auto.setUrl("jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
auto.setUsername("root");
auto.setPassword("root");
auto.setOutPutDir("E:\\MyProject\\shop\\shop-parent\\service\\service_user\\src\\main\\java");
auto.setParent("com.example.shop");
auto.setModuleName("user");
auto.setMapperXmlUrl("E:\\MyProject\\shop\\shop-parent\\service\\service_user\\src\\main\\resources\\mapper");
auto.setTableName("user");
auto.setTablePrefix("");
auto.setIsController(false);
auto.setIsService(false);
auto.setIsServiceImpl(false);
auto.setIsMapper(false);
auto.setIsMapperXml(false);
auto.setIsEntity(false);
FastAutoGenerator.create(auto.getUrl(), auto.getUsername(), auto.getPassword())
.globalConfig(builder -> {
builder.author("yangyaobo") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir(auto.getOutPutDir()); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent(auto.getParent()); // 设置父包名
if (!StringUtils.isEmpty(auto.getModuleName()))
builder.moduleName(auto.getModuleName()); // 设置父包模块名
// builder.entity("");//实体类包位置,默认entity
// builder.service("");//service包位置,默认service
// builder.serviceImpl("");//serviceImpl包位置,默认serviceImpl
// builder.mapper("");//mapper包位置,默认mapper
if (!StringUtils.isEmpty(auto.getMapperXmlUrl()))
builder.pathInfo(Collections.singletonMap(OutputFile.mapperXml, auto.getMapperXmlUrl())); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude(getTables(auto.getTableName())) // 设置需要生成的表名
.addTablePrefix(auto.getTablePrefix()); // 设置过滤表前缀
builder.entityBuilder()
.superClass(BaseEntity.class)//父类
.disableSerialVersionUID()//生成 serialVersionUID
.enableLombok()//开启 lombok 模型
.enableTableFieldAnnotation()//开启生成实体时生成字段注解
.addIgnoreColumns("create_time", "update_time", "create_by", "update_by", "del_flag", "version");//添加忽略字段
builder.controllerBuilder().enableRestStyle();//开启生成@RestController 控制器
builder.serviceBuilder().formatServiceFileName("%sService");//格式化 service 接口文件名称,去掉前面的I
})
.templateConfig(builder -> {
if (auto.getIsController()) {
System.out.println(1);
builder.disable(TemplateType.CONTROLLER);//禁用模板
}
if (auto.getIsService()) {
System.out.println(2);
builder.disable(TemplateType.SERVICE);//禁用模板
}
if (auto.getIsServiceImpl()) {
System.out.println(3);
builder.disable(TemplateType.SERVICEIMPL);//禁用模板
}
if (auto.getIsMapper()) {
System.out.println(4);
builder.disable(TemplateType.MAPPER);//禁用模板
}
if (auto.getIsMapperXml()) {
System.out.println(5);
builder.disable(TemplateType.XML);//禁用模板
}
if (auto.getIsEntity()) {
System.out.println(6);
builder.disable(TemplateType.ENTITY);//禁用模板
}
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
@Data
class AutoEntity {
private String Url;
private String username;
private String password;
private String outPutDir;
private String parent;
private String moduleName;
private String mapperXmlUrl;
private String tableName;
private String tablePrefix;
private Boolean isController;
private Boolean isServiceImpl;
private Boolean isService;
private Boolean isMapper;
private Boolean isMapperXml;
private Boolean isEntity;
}
依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--逆向工程需要模板引擎-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>