1 import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; 2 import com.baomidou.mybatisplus.core.toolkit.StringPool; 3 import com.baomidou.mybatisplus.core.toolkit.StringUtils; 4 import com.baomidou.mybatisplus.generator.AutoGenerator; 5 import com.baomidou.mybatisplus.generator.InjectionConfig; 6 import com.baomidou.mybatisplus.generator.config.*; 7 import com.baomidou.mybatisplus.generator.config.po.TableInfo; 8 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; 9 10 11 import java.util.ArrayList; 12 import java.util.List; 13 import java.util.Scanner; 14 15 /** 16 * @Author Eric 17 * @Date 2020/1/15 11:07 18 */ 19 20 public class MyBatisPlusGenerator { 21 22 23 public static String scanner(String tip) { 24 25 Scanner scanner = new Scanner(System.in); 26 StringBuilder help = new StringBuilder(); 27 help.append("请输入" + tip + ":"); 28 System.out.println(help.toString()); 29 if (scanner.hasNext()) { 30 String ipt = scanner.next(); 31 if (StringUtils.isNotBlank(ipt)) { 32 return ipt; 33 } 34 } 35 throw new MybatisPlusException("请输入正确的" + tip + "!"); 36 } 37 38 public static void main(String[] args) { 39 40 41 // 代码生成器 42 AutoGenerator mpg = new AutoGenerator(); 43 44 45 // 全局配置 46 GlobalConfig gc = new GlobalConfig(); 47 //项目路径 48 String projectPath = System.getProperty("user.dir"); 49 gc.setOutputDir(projectPath + "/src/main/java"); 50 //作者 51 gc.setAuthor("Eric"); 52 gc.setOpen(false); 53 // gc.setSwagger2(true); 实体属性 Swagger2 注解 54 mpg.setGlobalConfig(gc); 55 56 57 // 数据源配置 58 DataSourceConfig dsc = new DataSourceConfig(); 59 dsc.setUrl("jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false"); 60 61 dsc.setDriverName("com.mysql.cj.jdbc.Driver"); 62 dsc.setUsername("root"); 63 dsc.setPassword("root"); 64 mpg.setDataSource(dsc); 65 66 // 包配置 67 PackageConfig pc = new PackageConfig(); 68 mpg.setPackageInfo(pc); 69 70 // 自定义配置 71 InjectionConfig cfg = new InjectionConfig() { 72 @Override 73 public void initMap() { 74 // to do nothing 75 } 76 }; 77 78 // 如果模板引擎是 freemarker 79 // String templatePath = "/templates/mapper.xml.ftl"; 80 // 如果模板引擎是 velocity,指定模板位置,可以自定义模板 81 String templatePath = "/templates/mapper.xml.vm"; 82 83 // 自定义输出配置 84 List<FileOutConfig> focList = new ArrayList<>(); 85 // 自定义配置会被优先输出 86 focList.add(new FileOutConfig(templatePath) { 87 @Override 88 public String outputFile(TableInfo tableInfo) { 89 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! 90 return projectPath + "/src/main/resources/mapper/" 91 + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; 92 } 93 }); 94 95 cfg.setFileOutConfigList(focList); 96 mpg.setCfg(cfg); 97 98 // 配置模板 99 TemplateConfig templateConfig = new TemplateConfig(); 100 101 102 templateConfig.setXml(null); 103 mpg.setTemplate(templateConfig); 104 105 // 策略配置 106 StrategyConfig strategy = new StrategyConfig(); 107 strategy.setNaming(NamingStrategy.underline_to_camel); 108 strategy.setColumnNaming(NamingStrategy.underline_to_camel); 109 110 111 strategy.setEntityLombokModel(true); 112 strategy.setRestControllerStyle(true); 113 114 // 写于父类中的公共字段 115 //strategy.setSuperEntityClass(BaseData.class); 116 117 118 strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); 119 strategy.setControllerMappingHyphenStyle(true); 120 strategy.setTablePrefix("APP_"); 121 mpg.setStrategy(strategy); 122 mpg.execute(); 123 } 124 }
原文:https://www.cnblogs.com/zhujianqiang/p/14807882.html