官方地址:
Mybatis-Plus:https://mp.baomidou.com/guide/generator.html
pom中导入mybatis plus的jar包,因为后面会涉及到代码生成,所以我们还需要导入页面模板引擎,这里我们用的是freemarker。
pom.xml
导入以下依赖
<!-- 加载mybatis-plus jar包 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!--mybatis-plus反向生成--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version> </dependency> <!-- 模板引擎 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
CodeGenarator代码
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.DataSourceConfig; 7 import com.baomidou.mybatisplus.generator.config.FileOutConfig; 8 import com.baomidou.mybatisplus.generator.config.GlobalConfig; 9 import com.baomidou.mybatisplus.generator.config.PackageConfig; 10 import com.baomidou.mybatisplus.generator.config.StrategyConfig; 11 import com.baomidou.mybatisplus.generator.config.TemplateConfig; 12 import com.baomidou.mybatisplus.generator.config.po.TableInfo; 13 import com.baomidou.mybatisplus.generator.config.rules.DateType; 14 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; 15 import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; 16 17 import java.util.ArrayList; 18 import java.util.List; 19 import java.util.Scanner; 20 21 22 public class CodeGenerator { 23 /** 24 * <p> 25 * 读取控制台内容 26 * </p> 27 */ 28 public static String scanner(String tip) { 29 Scanner scanner = new Scanner(System.in); 30 StringBuilder help = new StringBuilder(); 31 help.append("请输入" + tip + ":"); 32 System.out.println(help.toString()); 33 if (scanner.hasNext()) { 34 String ipt = scanner.next(); 35 if (StringUtils.isNotBlank(ipt)) { 36 return ipt; 37 } 38 } 39 throw new MybatisPlusException("请输入正确的" + tip + "!"); 40 } 41 42 public static void main(String[] args) { 43 // 代码生成器 44 AutoGenerator mpg = new AutoGenerator(); 45 // 全局配置 46 String module = "workticket"; 47 GlobalConfig gc = new GlobalConfig(); 48 String projectPath = System.getProperty("user.dir") + "/" + module; 49 gc.setOutputDir(projectPath + "/src/main/java"); 50 //作者 51 gc.setAuthor(scanner("作者名")); 52 //打开输出目录 53 gc.setOpen(false); 54 // //xml开启 BaseResultMap 55 // gc.setBaseResultMap(true); 56 // //xml 开启BaseColumnList 57 // gc.setBaseColumnList(true); 58 // 实体属性 Swagger2 注解 59 gc.setSwagger2(true); 60 gc.setDateType(DateType.ONLY_DATE); 61 mpg.setGlobalConfig(gc); 62 63 64 // 数据源配置 65 DataSourceConfig dsc = new DataSourceConfig(); 66 // dsc.setUrl("jdbc:mysql://localhost:3307/vueblog?" + 67 // "useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia" + 68 // "/Shanghai"); 69 // dsc.setDriverName("com.mysql.cj.jdbc.Driver"); 70 // dsc.setUsername("root"); 71 // dsc.setPassword("001314"); 72 // mpg.setDataSource(dsc); 73 dsc.setUrl("jdbc:postgresql://localhost:5432/test"); 74 dsc.setSchemaName("public"); 75 dsc.setDriverName("org.postgresql.Driver"); 76 dsc.setUsername("postgres"); 77 dsc.setPassword("123456"); 78 mpg.setDataSource(dsc); 79 80 // 包配置 81 PackageConfig pc = new PackageConfig(); 82 pc.setModuleName(module); 83 pc.setParent("com.demo.micro"); 84 mpg.setPackageInfo(pc); 85 86 // 自定义配置 87 InjectionConfig cfg = new InjectionConfig() { 88 @Override 89 public void initMap() { 90 // to do nothing 91 } 92 }; 93 // 如果模板引擎是 freemarker 94 String templatePath = "/templates/mapper.xml.ftl"; 95 // 如果模板引擎是 velocity 96 // String templatePath = "/templates/mapper.xml.vm"; 97 // 自定义输出配置 98 List<FileOutConfig> focList = new ArrayList<>(); 99 // 自定义配置会被优先输出 100 focList.add(new FileOutConfig(templatePath) { 101 @Override 102 public String outputFile(TableInfo tableInfo) { 103 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! 104 return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; 105 } 106 }); 107 cfg.setFileOutConfigList(focList); 108 mpg.setCfg(cfg); 109 // 配置模板 110 TemplateConfig templateConfig = new TemplateConfig(); 111 //执行main方法,在控制台直接输出表名,多个表名用,隔开结果 112 templateConfig.setXml(null); 113 mpg.setTemplate(templateConfig); 114 // 策略配置 115 StrategyConfig strategy = new StrategyConfig(); 116 //数据库表映射到实体的命名策略 117 strategy.setNaming(NamingStrategy.underline_to_camel); 118 //数据库表字段映射到实体的命名策略 119 strategy.setColumnNaming(NamingStrategy.underline_to_camel); 120 //lombok模型 121 strategy.setEntityLombokModel(true); 122 //生成 @RestController 控制器 123 strategy.setRestControllerStyle(true); 124 strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); 125 strategy.setControllerMappingHyphenStyle(true); 126 //表前缀 127 strategy.setTablePrefix(""); 128 mpg.setStrategy(strategy); 129 mpg.setTemplateEngine(new FreemarkerTemplateEngine()); 130 mpg.execute(); 131 } 132 }
参考:https://blog.csdn.net/qq_44723773/article/details/118862972