最新的代码生成器版本, 使用 mybatis-plus-generator 3.5.1 及其以上版本,不废话直接上步骤
新建Maven项目
导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
配置代码生成策略
public class CodeGenerator {
private static final String url = "jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
private static final String username = "root";
private static final String password = "123456";
public static void main(String[] args) {
FastAutoGenerator.create(url, username, password)
// 全局配置
.globalConfig(builder -> {
builder.author("小明")
.commentDate("yyyy-MM-dd")
// 启用swagger,会在实体类上生成swagger注解
.enableSwagger()
// 代码生成的位置
.outputDir(System.getProperty("user.dir") + "/src/main/java")
// 代码生成完成后禁止自动打开
.disableOpenDir();
})
// 包配置策略
.packageConfig(builder -> {
// 父包
builder.parent("com.example.demo")
// .moduleName("ums")
// 生成的mapper xml文件的位置,我这里是在resources下的mappers文件夹
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mappers"));
})
.strategyConfig(builder -> {
// 要生成的表名,可以写多个
builder.addInclude("pms_brand")
// 加上这个,所有生产的文件会去除掉前缀,如实体类为Brand,注释掉,则全部按照表名来输出,如PmsBrand
.addTablePrefix("pms_")
.entityBuilder()
// 开启lombok注解,以及链式调用,方便创建实体类是对属性设值的时候,如 brand.setName("").setPrice(..)...
.enableChainModel()
.enableLombok()
// 覆盖生成文件
.enableFileOverride()
// 实体类命名下划线转大写
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.mapperBuilder()
// 生成的Mapper接口,继承BaseMapper
.superClass(BaseMapper.class)
.enableFileOverride()
.serviceBuilder()
// 生成的service接口继承IService
.superServiceClass(IService.class)
// service实现类继承ServiceImpl
.superServiceImplClass(ServiceImpl.class)
.enableFileOverride()
// 生成的service命名规则 IxxxService
.formatServiceFileName("I%sService")
// 生成的service实现类命名规则 XxxServiceImpl
.formatServiceImplFileName("%sServiceImpl")
.controllerBuilder()
// 生成的controller的注解是RestController
.enableRestStyle()
.enableFileOverride();
})
.execute();
}
}
执行main方法,生成代码
红框的都是通过代码生成器生成的结果,报红是我这个项目没有添加部分依赖,如swagger,lombok等,你们实际用的时候将生成的代码拷贝到项目里,报红就消失了