编写自动代码生成器
package com.mybatisPlus.config;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
/**
*
* mybatisPlus自动代码生成器
*
*/
public class mybatisPlusCode {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus?serverTimezone=Asia/Shanghai", "root", "root")
// 全局配置
.globalConfig((scanner, builder) -> builder
//除了作者还有其他的配置,可自行配置
.author(scanner.apply("请输入作者名称?")).fileOverride()
.disableOpenDir()
//这个是代码生成的路径,指要把需要的代码都生成到哪个包下边
.outputDir("D:\\work\\mybatisPlus\\src\\main\\java") // 指定输出目录
)
// 包配置
.packageConfig((builder) -> builder
//这个是你项目的父包
.parent("com.mybatisPlus")
//下边的就是要创建的包的配置
.entity("entity")
.service("service")
//因为你的Impl是要在service包下面的,这里有问题,需要把impl包手动移动到service包下
.serviceImpl("Impl")
+ "\\src\\main\\java\\com\\mybatisPlus\\service"))
.mapper("mapper")
.controller("controller")
//xml文件也一样,都需要单独配置一下生成路径
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"\\src\\main\\resources\\mapper"))
)
// 策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?如果生成所有表输入 all")))
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok().addTableFills(
new Column("create_time", FieldFill.INSERT)
).build())
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new BeetlTemplateEngine())
*/
.templateConfig(new Consumer<TemplateConfig.Builder>() {
@Override
public void accept(TemplateConfig.Builder builder) {
// 实体类使用我们自定义模板
builder.build();
}
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
代码生成前
这里是没有任何的实体类包Mapper包等
生成代码后
我们需要手动把impl包移动到service包下,这里有问题,之后会改良代码!
官网链接:mybatis-plus官网