• 【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的开发模式,编写结构文件使用这个能省力很多,

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

  • 相关阅读:
    java循环遍历枚举类型,Enum根据文本获取Key
    java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式
    jdk8的特性stream().map()
    jrebel2019注册码
    Vue刷新后页面后报404的问题
    JS中对List、Map的各种遍历方式
    防止vue重复点击
    elementUI 按钮美化
    Vue路由<router-link>属性的使用
    Maven 打包com.mongodb does not exist
  • 原文地址:https://www.cnblogs.com/mindzone/p/13444416.html
Copyright © 2020-2023  润新知