6.4
因为现在使用了mybatis框架,但是一些代码重复很耗费时间,为了加快开发速度,了解了mybatis-plus,而且也知道了能自动生成后端的样例。
所需配置
| <!--mybatisPlus--> | |
| <dependency> | |
| <groupId>com.baomidou</groupId> | |
| <artifactId>mybatis-plus-boot-starter</artifactId> | |
| <version>3.4.1</version> | |
| </dependency> | |
| <!--mybatis-plus代码生成器--> | |
| <dependency> | |
| <groupId>com.baomidou</groupId> | |
| <artifactId>mybatis-plus-generator</artifactId> | |
| <version>3.4.1</version> | |
| </dependency> | |
| <!--freemarker模板--> | |
| <dependency> | |
| <groupId>org.freemarker</groupId> | |
| <artifactId>freemarker</artifactId> | |
| <version>2.3.30</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>com.spring4all</groupId> | |
| <artifactId>spring-boot-starter-swagger</artifactId> | |
| <version>1.5.1.RELEASE</version> | |
| </dependency> |
applycation.yml
| spring: | |
| datasource: | |
| url: jdbc:mysql://localhost3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 | |
| driver-class-name: com.mysql.cj.jdbc.Driver | |
| username: root | |
| password: 自己的密码 |
代码生成器代码如下
| package com.example.common; | |
| import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; | |
| import com.baomidou.mybatisplus.core.toolkit.StringPool; | |
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |
| 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 java.util.ArrayList; | |
| import java.util.List; | |
| import java.util.Scanner; | |
| public class CodeGenerator { | |
| public static String scanner(String tip) { | |
| Scanner scanner = new Scanner(System.in); | |
| System.out.println("请输入" + tip + ":"); | |
| if (scanner.hasNext()) { | |
| String ipt = scanner.next(); | |
| if (StringUtils.isNotBlank(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"); | |
| gc.setOutputDir(projectPath + "/src/main/java"); | |
| gc.setAuthor("GYG"); | |
| gc.setOpen(false); | |
| // gc.setSwagger2(true); 实体属性 Swagger2 注解 | |
| mpg.setGlobalConfig(gc); | |
| // 数据源配置 | |
| DataSourceConfig dsc = new DataSourceConfig(); | |
| dsc.setUrl("jdbc:mysql://localhost:3306/db1?useUnicode=true&useSSL=false&characterEncoding=utf8"); | |
| // dsc.setSchemaName("public"); | |
| dsc.setDriverName("com.mysql.cj.jdbc.Driver"); | |
| dsc.setUsername("root"); | |
| dsc.setPassword("031856Gyg"); | |
| mpg.setDataSource(dsc); | |
| // 包配置 | |
| PackageConfig pc = new PackageConfig(); | |
| // pc.setModuleName(scanner("模块名")); | |
| pc.setParent("com.example") | |
| .setEntity("entity") | |
| .setMapper("mapper") | |
| .setService("service") | |
| .setServiceImpl("service.impl") | |
| .setController("controller"); | |
| mpg.setPackageInfo(pc); | |
| // 自定义配置 | |
| InjectionConfig cfg = new InjectionConfig() { | |
| 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) { | |
| public String outputFile(TableInfo tableInfo) { | |
| // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! | |
| return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() | |
| + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; | |
| } | |
| }); | |
| /* | |
| cfg.setFileCreate(new IFileCreate() { | |
| @Override | |
| public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { | |
| // 判断自定义文件夹是否需要创建 | |
| checkDir("调用默认方法创建的目录,自定义目录用"); | |
| if (fileType == FileType.MAPPER) { | |
| // 已经生成 mapper 文件判断存在,不想重新生成返回 false | |
| return !new File(filePath).exists(); | |
| } | |
| // 允许生成模板文件 | |
| return true; | |
| } | |
| }); | |
| */ | |
| cfg.setFileOutConfigList(focList); | |
| mpg.setCfg(cfg); | |
| // 配置模板 | |
| TemplateConfig templateConfig = new TemplateConfig(); | |
| // 配置自定义输出模板 | |
| //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 | |
| // templateConfig.setEntity("templates/entity2.java"); | |
| // templateConfig.setService(); | |
| // 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.setSuperEntityClass("你自己的父类实体,没有就不用设置!"); | |
| strategy.setEntityLombokModel(true); | |
| strategy.setRestControllerStyle(true); | |
| // 公共父类 | |
| // strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!"); | |
| // // 写于父类中的公共字段 | |
| // strategy.setSuperEntityColumns("id"); | |
| strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); | |
| strategy.setControllerMappingHyphenStyle(true); | |
| strategy.setTablePrefix("tb_");//删除前缀tb_ | |
| // strategy.setTablePrefix(pc.getModuleName() + "_"); | |
| mpg.setStrategy(strategy); | |
| mpg.setTemplateEngine(new FreemarkerTemplateEngine()); | |
| mpg.execute(); | |
| } | |
| } |
以上代码中只需要改以下几处
| // 数据源配置 | |
| DataSourceConfig dsc = new DataSourceConfig(); | |
| dsc.setUrl("jdbc:mysql://localhost:3306/db1?useUnicode=true&useSSL=false&characterEncoding=utf8");//将这里的db1换成自己的数据库 | |
| // dsc.setSchemaName("public"); | |
| dsc.setDriverName("com.mysql.cj.jdbc.Driver"); | |
| dsc.setUsername("root");//自己的名称,一般都是root | |
| dsc.setPassword("root");//自己的密码 | |
| mpg.setDataSource(dsc); |
可以将生成代码的类放在一个叫common的文件夹里,进行这些工作

浙公网安备 33010602011771号