zoukankan      html  css  js  c++  java
  • MyBatisPlus_代码生成器

    代码生成器

    1. 导入依赖

    除了mybatisplus的依赖, 主要导入以下三个依赖

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.2</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    • 代码生成器的依赖
    • 模板引擎的依赖
    • Swagger的依赖(这里是Swagger 2 3.0版本, 2.0版本需要导入两个依赖)

    2. 编写代码

    package com.wang.generator;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    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.po.TableFill;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    
    public class MyBatisPlusCodeGenerator {
        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("王诗凯");
            //生成完不打开窗口
            gc.setOpen(false);
            //Swagger2
            gc.setSwagger2(true);
            //是否覆盖
            gc.setFileOverride(false);
            gc.setIdType(IdType.ID_WORKER);
            gc.setDateType(DateType.ONLY_DATE);
            //去Service的前缀
            gc.setServiceName("%sService");
            gc.setServiceImplName("%sServiceImpl");
            mpg.setGlobalConfig(gc);
    
            //数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&useSSL=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("123456");
            mpg.setDataSource(dsc);
    
            //包配置
            PackageConfig pc = new PackageConfig();
            //设置生成的模块名
            pc.setModuleName("register");
            pc.setParent("com.wang");
            pc.setEntity("pojo");
            pc.setMapper("dao");
            pc.setService("service");
            pc.setServiceImpl("serviceImpl");
            mpg.setPackageInfo(pc);
    
            //策略配置
            StrategyConfig strategy = new StrategyConfig();
            //下划线转驼峰
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            //实体类使用lombok
            strategy.setEntityLombokModel(true);
            strategy.setRestControllerStyle(true);
            strategy.setControllerMappingHyphenStyle(true);
    
            //逻辑删除
            strategy.setLogicDeleteFieldName("deleted");
            //乐观锁
            strategy.setVersionFieldName("version");
            //自动填充设置
            TableFill createTime = new TableFill("create_time", FieldFill.INSERT_UPDATE);
            TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);
            ArrayList<TableFill> tableFills = new ArrayList<>();
            tableFills.add(createTime);
            tableFills.add(updateTime);
            strategy.setTableFillList(tableFills);
    
            mpg.setStrategy(strategy);
    
            mpg.execute();
    
        }
    }
    

    3. 注意

    • 注意sql的url不要忘了写时区, 否则会报错

    • 如果使用了自动填充配置, 不要忘了配置handle

    • 使用了乐观锁和逻辑删除, 记得要注册组件!

    • 代码的路径 = 生成的路径 + 包配置中的父路径 + 包名

    image-20201019100917569

  • 相关阅读:
    Chapter 5. 集合---(ArrayList、Stack、queue、哈希表)
    Chapter 4. 数组
    第一章 代码无错就是优?——简单工厂模式
    条款34:区分接口继承和实现继承
    条款33:避免遮掩继承而来的名称
    条款32:确定你的public继承塑模出is-a关系
    条款12:复制对象时勿忘其每一部分
    A:魔兽世界之一:备战
    条款09:绝不在构造和析构过程中调用virtual函数
    7、数值算法
  • 原文地址:https://www.cnblogs.com/wang-sky/p/13838747.html
Copyright © 2011-2022 走看看