使用mybatis-plus的逆向工程生成entity、controller、service、mapper的初始代码
参考链接:
https://baomidou.com/pages/d357af/#%E6%B7%BB%E5%8A%A0%E4%BE%9D%E8%B5%96
https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8
https://baomidou.com/pages/061573/#%E6%95%B0%E6%8D%AE%E6%BA%90-datasourceconfig-%E9%85%8D%E7%BD%AE
package com.gd.aiops.demo.controller;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class CodeGenerated {
@Test
public void generateCode() {
generate("shooll", "t_project_xjw","t_user");
}
private void generate(String moduleName, String... tableNamesInclude){
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("xjw");
gc.setOpen(false);
//实体属性 Swagger2 注解
gc.setSwagger2(true);
//默认不覆盖,如果文件存在,将不会再生成,配置true就是覆盖
gc.setFileOverride(true);
gc.setEntityName("%sPO");
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://数据库地址:3306/demo?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("数据库用户名");
dsc.setPassword("数据库密码");
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(moduleName);
pc.setParent("com.gd.aiops");
pc.setEntity("po");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setSuperEntityClass("com.gd.aiops.framework.mvc.web.po.BasePO");
strategy.setEntityLombokModel(true);
strategy.setSuperControllerClass("com.gd.aiops.framework.mvc.web.controller.BaseController");
strategy.setInclude(tableNamesInclude);
strategy.entityTableFieldAnnotationEnable(true);
//strategy.setSuperEntityColumns("id");
strategy.setRestControllerStyle(true);
// strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix("t_");
mpg.setStrategy(strategy);
// 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有!
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
configCustomizedCodeTemplate(mpg);
configInjection(mpg);
mpg.execute();
}
/**
* 自定义模板
* @param mpg
*/
private void configCustomizedCodeTemplate(AutoGenerator mpg){
//配置 自定义模板
TemplateConfig templateConfig = new TemplateConfig()
// .setController("generator/templates/controller.java")
// .setService("generator/templates/service.java")
// .setServiceImpl("generator/templates/serviceImpl.java")
//.setMapper("generator/templates/mapper.java")
//.setEntity("generator/templates/entity.java")
.setXml(null) //不生成xml
;
mpg.setTemplate(templateConfig);
}
/**
* 配置自定义参数/属性
*
* @param mpg
*/
private void configInjection(AutoGenerator mpg){
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
/*
自定义属性注入: 模板配置:abc=${cfg.abc}
}
}