1 package com.czf.coupon;
2
3 import com.baomidou.mybatisplus.annotation.DbType;
4 import com.baomidou.mybatisplus.generator.AutoGenerator;
5 import com.baomidou.mybatisplus.generator.config.*;
6 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
7
8 /**
9 * @Author chenzhanfan
10 * @Date 2021/8/11
11 * @Description
12 */
13 public class CodeGenerator {
14 public static void main(String[] args) {
15
16 String moduleName = ""; //模块名称
17 String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC";
18 String Driver = "com.mysql.cj.jdbc.Driver";
19 String userName = "root";
20 String password = "3118000832";
21 String include = "pms_brand,pms_product,pms_product_attribute,pms_product_attribute_category," +
22 "pms_product_attribute_value,pms_product_category,ums_admin,ums_admin_permission_relation," +
23 "ums_admin_role_relation,ums_permission,ums_role,ums_role_permission_relation"; //数据库表名
24 String parentPackage = "com.czf.coupon"; //父包包名
25 boolean onlyEntity = true; //是否只生成实体类
26 // 代码生成器
27 AutoGenerator mpg = new AutoGenerator();
28
29 // 全局配置
30 GlobalConfig gc = new GlobalConfig();
31 String projectPath = System.getProperty("user.dir"); //获得项目名
32 gc.setOutputDir(projectPath + "/" + moduleName + "/src/main/java"); //如果需要区分模块,在此添加模块名
33 gc.setAuthor("chenzhanfan");
34 gc.setOpen(false);//生成后是否打开资源管理器
35 gc.setFileOverride(false); //重新生成时文件是否覆盖
36 gc.setServiceName("%sService"); //去掉Service接口的首字母I
37 // gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
38 gc.setSwagger2(true); //实体属性 Swagger2 注解
39 mpg.setGlobalConfig(gc);
40
41 // 数据源配置
42 DataSourceConfig dsc = new DataSourceConfig();
43 dsc.setUrl(url);
44 // dsc.setSchemaName("public");
45 dsc.setDriverName(Driver);
46 dsc.setUsername(userName);
47 dsc.setPassword(password);
48 dsc.setDbType(DbType.MYSQL);
49 mpg.setDataSource(dsc);
50
51 /**
52 * 输出模板,如果按照官方原生的可以不配置,也可以配置自定义的模板
53 */
54 TemplateConfig templateConfig = new TemplateConfig();
55 // 配置自定义输出模板
56 //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别,默认vm,xml不输出
57 templateConfig.setEntity("templates/entity.java");
58 if (onlyEntity) {
59 templateConfig.setService(null);
60 templateConfig.setServiceImpl(null);
61 templateConfig.setController(null);
62 templateConfig.setMapper(null);
63 templateConfig.setXml(null);
64 } else {
65 templateConfig.setService("templates/service.java");
66 templateConfig.setServiceImpl("templates/serviceImpl.java");
67 templateConfig.setController("templates/controller.java");
68 templateConfig.setMapper("templates/mapper.java");
69 templateConfig.setXml(null);
70 }
71 mpg.setTemplate(templateConfig);
72
73 // 包配置
74 PackageConfig pc = new PackageConfig();
75 pc.setModuleName(null); //模块名
76 pc.setParent(parentPackage);
77 pc.setEntity("entity");
78 pc.setController("controller");
79 pc.setMapper("mapper");
80 pc.setService("service");
81
82 mpg.setPackageInfo(pc);
83
84 // 策略配置
85 StrategyConfig strategy = new StrategyConfig();
86 strategy.setInclude((include).split(","));//表名,多个英文逗号分割
87 strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
88 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
89 strategy.setEntityLombokModel(false);// lombok 模型 @Accessors(chain = true) setter链式操作
90 strategy.setRestControllerStyle(true);//restful api风格控制器
91 strategy.setControllerMappingHyphenStyle(true);//url中驼峰转连字符
92 strategy.setTablePrefix(pc.getModuleName() + "_");//生成实体时去掉表前缀
93 mpg.setStrategy(strategy);
94 mpg.execute();
95 }
96 }