最近使用mybatis-plus-generator3.5.1生成后端代码,发现用法和旧版本有很大不一样,折腾了很久才摸索出来,代码如下所示:
public class CodeGenerator {
private String moudleName="house_resources";//模块名
private String tableName="tb_house_resources";//表名
@Test
public void generate(){
FastAutoGenerator.create("jdbc:mysql://localhost:3306/haoke?serverTimezone=Asia/Shanghai", "root", "123456")
.globalConfig(builder -> {
builder.author("heyu") // 设置作者
//.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir(System.getProperty("user.dir")+"/src/main/java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("cn.itcast.haoke.dubbo.server") // 设置父包名
.moduleName(moudleName) // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+
"/src/main/resources/mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude(tableName) // 设置需要生成的表名
.addTablePrefix("tb_") // 设置过滤表前缀
.entityBuilder()
.enableLombok()
.superClass("cn.itcast.haoke.dubbo.server.pojo.BasePojo")
.idType(IdType.AUTO)
.enableChainModel()
.controllerBuilder()
.enableRestStyle()
.enableHyphenStyle();
})
.templateConfig(builder -> {
builder.mapperXml("/templates/mapper.xml");
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
上述配置使用了freemarker模板引擎,所以还需要额外引入freemarker的依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
只有通过单元测试来运行这段代码才能在当前模块下生成项目文件。通过主函数来运行会将项目文件生成到根模块下。
然而单元测试又不能在控制台输入文字,因此将模块名和表名定义在属性里面以便于修改。