AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
1. 添加依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--mybatisplus代码生成-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
2. 添加模板引擎依赖
<!--模板-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
3. 创建生成代码类
public class GeneratorApp {
public static void main(String[] args) {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
//获得当前项目的路径(物理路径)
String projectPath = System.getProperty("user.dir");
//如果是子工程,则需要写成
//String projectPath = System.getProperty("user.dir")+"service_order";
//设置生成的路径
gc.setOutputDir(projectPath + "/src/main/java");
//设置作者
gc.setAuthor("4977332@qq.com");
//生成后是否打开所在文件夹
gc.setOpen(false);
//生成Swagger2注解(需要导包)
gc.setSwagger2(true);
//重新生成时文件是否覆盖
gc.setFileOverride(true);
//设置实体类的名字
gc.setEntityName("%s");
//设置mapper接口名
gc.setMapperName("%sMapper");
//设置mapper.xml文件名
gc.setXmlName("%sMapper");
//设置在mapper.xml中生成一个基础的<ResultMap>映射所有的字段
gc.setBaseResultMap(true);
//设置业务逻辑类接口名(首字母I去掉)
gc.setServiceName("%sService");
//设置业务逻辑实现类名
gc.setServiceImplName("%sServiceImpl");
//将全局配置设置到AutoGenerator
mpg.setGlobalConfig(gc);
//主键策略
gc.setIdType(IdType.ID_WORKER_STR);
//定义生成的实体类中日期类型
gc.setDateType(DateType.ONLY_DATE);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
// 4、包配置:控制项目生成的包
PackageConfig pc = new PackageConfig();
//完整包名
pc.setParent("com.example");
//设置模块名,可以省略不写或null,如果写了就是com.example.模块名
pc.setModuleName(null);
//创建controller包名
pc.setController("controller");
//创建实体类包名
pc.setEntity("entity");
//创建业务逻辑层包名
pc.setService("service");
//创建mapper包名
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
//去掉表前缀
strategy.setTablePrefix("cms_");
//表名映射到实体的命名策略(下划线转驼峰)
strategy.setNaming(NamingStrategy.underline_to_camel);
//字段名映射到实体的命名策略(下划线转驼峰)
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//实体类是否支持lombok 模型 @Accessors(chain = true) setter链式操作
strategy.setEntityLombokModel(true);
//controller类上是否使用@RestController
strategy.setRestControllerStyle(true);
//对那一张表生成代码(多个用逗号分开)
//strategy.setInclude("cms_user", "cms_role");
//也可以按表的前缀来生成(如将所有以cms_开头的表)
strategy.setLikeTable(new LikeTable("cms_"));
//生成实体时去掉表前缀
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
// 6、执行代码生成
mpg.execute();
}
}
4. 运行就好了