| package com.moral; | 
|   | 
| import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; | 
| import com.baomidou.mybatisplus.core.toolkit.StringPool; | 
| import com.baomidou.mybatisplus.generator.AutoGenerator; | 
| import com.baomidou.mybatisplus.generator.InjectionConfig; | 
| import com.baomidou.mybatisplus.generator.config.*; | 
| import com.baomidou.mybatisplus.generator.config.po.TableInfo; | 
| import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; | 
| import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | 
| import org.apache.commons.lang3.StringUtils; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Scanner; | 
|   | 
|   | 
| public class CodeGenerator { | 
|   | 
|     /** | 
|      * <p> | 
|      * 读取控制台内容 | 
|      * </p> | 
|      */ | 
|     public static String scanner(String tip) { | 
|         Scanner scanner = new Scanner(System.in); | 
|         StringBuilder help = new StringBuilder(); | 
|         help.append("请输入" + tip + ":"); | 
|         System.out.println(help.toString()); | 
|         if (scanner.hasNext()) { | 
|             String ipt = scanner.next(); | 
|             if (StringUtils.isNotEmpty(ipt)) { | 
|                 return ipt; | 
|             } | 
|         } | 
|         throw new MybatisPlusException("请输入正确的" + tip + "!"); | 
|     } | 
|     //运行,填数据库表名开始生成代码 | 
|     public static void main(String[] args) { | 
|         // 代码生成器 | 
|         AutoGenerator mpg = new AutoGenerator(); | 
|   | 
|         // 全局配置 | 
|         GlobalConfig gc = new GlobalConfig(); | 
|         //String projectPath = System.getProperty("user.dir"); | 
|         String projectPath="C:\\Users\\cdl\\Desktop\\comProject\\newProject\\moral\\screen-api"; | 
|         gc.setOutputDir(projectPath + "/src/main/java"); | 
|         gc.setAuthor("moral"); | 
|         gc.setOpen(false); | 
|         // service 命名方式 | 
|         gc.setServiceName("%sService"); | 
|         // service impl 命名方式 | 
|         gc.setServiceImplName("%sServiceImpl"); | 
|         // 自定义文件命名,注意 %s 会自动填充表实体属性! | 
|         gc.setMapperName("%sMapper"); | 
|         gc.setXmlName("%sMapper"); | 
|         gc.setFileOverride(true); | 
|         gc.setActiveRecord(true); | 
|         // XML 二级缓存 | 
|         gc.setEnableCache(false); | 
|         // XML ResultMap | 
|         gc.setBaseResultMap(true); | 
|         // XML columList | 
|         gc.setBaseColumnList(false); | 
|         // gc.setSwagger2(true); 实体属性 Swagger2 注解 | 
|         mpg.setGlobalConfig(gc); | 
|   | 
|         // 数据源配置 | 
|         DataSourceConfig dsc = new DataSourceConfig(); | 
|         dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"); | 
|         //dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"); | 
|         dsc.setDriverName("com.mysql.cj.jdbc.Driver"); | 
|         dsc.setUsername("root"); | 
|         dsc.setPassword("moral_123456"); | 
|         mpg.setDataSource(dsc); | 
|   | 
|         // 包配置 | 
|         PackageConfig pc = new PackageConfig(); | 
|         pc.setParent("com.moral.api"); | 
|         pc.setEntity("entity"); | 
|         pc.setService("service"); | 
|         pc.setServiceImpl("service.impl"); | 
|         pc.setController("controller"); | 
|         mpg.setPackageInfo(pc); | 
|   | 
|         // 自定义配置 | 
|         InjectionConfig cfg = new InjectionConfig() { | 
|             @Override | 
|             public void initMap() { | 
|                 // to do nothing | 
|             } | 
|         }; | 
|   | 
|         // 如果模板引擎是 freemarker | 
|         String templatePath = "/templates/mapper.xml.ftl"; | 
|         // 如果模板引擎是 velocity | 
|         // String templatePath = "/templates/mapper.xml.vm"; | 
|   | 
|         // 自定义输出配置 | 
|         List<FileOutConfig> focList = new ArrayList<>(); | 
|         // 自定义配置会被优先输出 | 
|         focList.add(new FileOutConfig(templatePath) { | 
|             @Override | 
|             public String outputFile(TableInfo tableInfo) { | 
|                 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! | 
|                 String moduleName = pc.getModuleName() == null ? "" : pc.getModuleName(); | 
|                 return projectPath + "/src/main/resources/mapper/" + moduleName | 
|                         + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT + "xml"; | 
|             } | 
|         }); | 
|         cfg.setFileOutConfigList(focList); | 
|         mpg.setCfg(cfg); | 
|   | 
|         // 配置模板 | 
|         TemplateConfig templateConfig = new TemplateConfig(); | 
|   | 
|         templateConfig.setController(""); | 
|         templateConfig.setXml(null); | 
|         mpg.setTemplate(templateConfig); | 
|   | 
|         // 策略配置 | 
|         StrategyConfig strategy = new StrategyConfig(); | 
|         strategy.setNaming(NamingStrategy.underline_to_camel); | 
|         strategy.setColumnNaming(NamingStrategy.underline_to_camel); | 
|         strategy.setEntityLombokModel(true); | 
|         strategy.setRestControllerStyle(true); | 
|         //自定义要生成实体类的表 | 
|         strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); | 
|         strategy.setControllerMappingHyphenStyle(true); | 
|        // strategy.setTablePrefix(pc.getModuleName() + "_"); | 
|         mpg.setStrategy(strategy); | 
|         mpg.setTemplateEngine(new FreemarkerTemplateEngine()); | 
|         mpg.execute(); | 
|     } | 
|   | 
| } |