AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
1 准备工作
创建springboot工程,这里省略。
2 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- mybatisplus依赖,注意不用引入mybatis依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
<!-- mysql依赖可换成对应版本 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- mybatis-plus代码生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- 自动生成代码的模板引擎,mybatis-plus默认的-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<!-- 由于生成的controller会用到web的注解-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3 创建CodeGeneratorTest类
需要对
- 数据源配置,(自己数据库对应的url,username,password等)
- 全局配置, (作者信息,输出目录等)
- 包配置, (Entity、Mapper、Mapper XML、Service、Controller 等各个模块的包命名等)
- 策略配置, (配置生成那些表,怎么生成等)
- 模板配置
- 注入配置
注意以下路径需要修改为实制项目路径,要生成的数据库表名需要修改为实制的,数据库源url修改为对应的数据源
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
import org.junit.Test;
import java.util.Collections;
/**
* @author: wuKeFan
* @date: 2022/2/24 10:39
* @version 1.0
*/
public class CodeGeneratorTest {
@Test
public void run() {
FastAutoGenerator.create(
//数据源配置,url需要修改
new DataSourceConfig.Builder("url","username","password")
.dbQuery(new MySqlQuery())
.schema("schema")
.typeConvert(new MySqlTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler())
)
//全局配置
.globalConfig(builder -> {
builder.author("wuKeFan") // 设置作者
//.disableOpenDir()//禁止打开输出目录
//.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir(System.getProperty("user.dir")+"/src/main/java"); // 指定输出目录
})
//包配置
.packageConfig(builder -> {
builder.parent("com.wkf.workrecord.tools.autocode") // 设置父包名,根据实制项目路径修改
.moduleName("web") // 父包名路径下再新建的文件夹
.entity("entity") // 后面这些是sys文件夹里新建的各分类文件夹
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
//.other("other")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir")+"/src/main/java/com/wkf/workrecord/tools/autocode/web/mapper/xml")); // 存放mapper.xml路径
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude("jm_fxy_apply_staging_plan_code") // 设置需要生成的表名
.addTablePrefix("jm_") // 设置过滤表前缀
.entityBuilder() //实体类配置
.enableLombok() //使用lombok
.enableTableFieldAnnotation()//实体类字段注解
.controllerBuilder()//controller配置
.enableRestStyle()//开启restcontroller
.mapperBuilder()
.enableMapperAnnotation()//开启mapper注解
.enableBaseResultMap()//启用 BaseResultMap 生成
.enableBaseColumnList();//启用 BaseColumnList
})
//.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
4 运行代码生成器
点击运行上面的main方法就能自动生成了
生成的效果图:
这样代码生成器就写好了,如果需要其他格式模板可以自行参考下面的配置,自行修改
5 数据库配置(DataSourceConfig)
5.1 基础配置
5.2 可选配置
5.3 全局配置(GlobalConfig)
在这里插入图片描述