zoukankan      html  css  js  c++  java
  • 【Mybatis-Plus】06 代码生成器 CodeGenerator

    导入生成器需要的依赖坐标:

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.2.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.29</version>
    </dependency>
    
    <dependency>
        <groupId>com.ibeetl</groupId>
        <artifactId>beetl</artifactId>
        <version>3.0.11.RELEASE</version>
    </dependency>

    新建了一个普通Maven空项目:

    创建我们的代码生成器程序:

    import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.apache.commons.lang3.StringUtils;
    
    import java.util.Scanner;
    
    /**
     * @author DaiZhiZhou
     * @file MP-Spring
     * @create 2020-08-06 9:11
     */
    public class CodeGenerator {
    
        /**
         * <p>
         * 读取控制台内容
         * </p>
         */
        public static String scanner(String tip) {
            Scanner scanner = new Scanner(System.in);
            StringBuilder help = new StringBuilder();
            help.append("请输入").append(tip).append(":");
            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 mybatisPlusCodeGenerator = new AutoGenerator();
    
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            
            // 先得到当前工程目录
            String projectPath = System.getProperty("user.dir");
            // 是maven项目的结构,就是工程目录 + /src/main/java
            gc.setOutputDir(projectPath + "/src/main/java");
            
            //gc.setOutputDir("D:\workspace-sts\0520adv\02_mp_springboot/src/main/java");
            
            // 设置生成文件的作者信息
            gc.setAuthor("Echo42");
    
            //当代码生成完成之后是否打开代码所在的文件夹
            gc.setOpen(true);
            
            // gc.setSwagger2(true); 实体属性 Swagger2 注解
            //gc.setServiceName("%sService");
            
            // 将上述的全局配置注入
            mybatisPlusCodeGenerator.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dataSourceConfiguration = new DataSourceConfig();
    
            dataSourceConfiguration.setUrl("jdbc:mysql://localhost:3306/oa?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
    
            // dataSourceConfiguration.setSchemaName("public");
            dataSourceConfiguration.setDriverName("com.mysql.cj.jdbc.Driver");
            dataSourceConfiguration.setUsername("root");
            dataSourceConfiguration.setPassword("123456");
    
            mybatisPlusCodeGenerator.setDataSource(dataSourceConfiguration);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
    
            // 设置父级包名
            pc.setParent("cn.echo42");//controller entity  service  service.impl
    
            pc.setModuleName(scanner("模块名"));
            //pc.setModuleName("sys");
    
            // 实体类名称
            pc.setEntity("domain");
    
            // mapper包名称
            pc.setMapper("mapper");
    
            // mapper对应的映射器xml
            pc.setXml("mapper.xml");
    
            // 业务包层名称
            pc.setService("service");
    
            // 业务接口的实现类包
            pc.setServiceImpl("service.impl");
    
            // 控制器包名称
            pc.setController("controller");
    
            // 装填包信息对象
            mybatisPlusCodeGenerator.setPackageInfo(pc);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
    
            //设置字段和表名的是否把下划线完成驼峰命名规则
            strategy.setNaming(NamingStrategy.underline_to_camel);
    
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    
            //设置生成的实体类继承的父类
            //strategy.setSuperEntityClass("com.sxt.BaseEntity");
    
            //是否启动lombok
            strategy.setEntityLombokModel(true);
    
            //是否生成resetController
            strategy.setRestControllerStyle(true);
    
            // 公共父类
            //strategy.setSuperControllerClass("com.sxt.BaseController");
    
            // 写于父类中的公共字段
            //strategy.setSuperEntityColumns("person_id","person_name");
    
            //要设置生成哪些表 如果不设置就是生成所有的表
            //strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
    
            strategy.setControllerMappingHyphenStyle(true);
    
            //strategy.setTablePrefix(pc.getModuleName() + "_");
            strategy.setTablePrefix("sys_");
    
            mybatisPlusCodeGenerator.setStrategy(strategy);
    
            mybatisPlusCodeGenerator.execute();
        }
    }

    点击运行:

    然后生成的这个目录结构:

    基础四层就帮我们自动创建完成了:

    controller报错是因为没有加入SpringMVC:

    如果是SSMP的开发模式,编写结构文件使用这个能省力很多,

    但是对结构不清楚的情况还是多人肉手写熟悉熟悉

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/mindzone/p/13444416.html
Copyright © 2011-2022 走看看