乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      手把手教你SpringBoot整合MybatisPlus 代碼生成器

       路人甲Java 2021-04-28

      一、在pom.xml中添加所需依賴

      <!-- MyBatis-Plus代碼生成器-->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-generator</artifactId>
          <version>3.4.1</version>
      </dependency>
      <!--MyBatis-Plus逆向功能所需的模板引擎-->
      <dependency>
          <groupId>org.freemarker</groupId>
          <artifactId>freemarker</artifactId>
          <version>2.3.30</version>
      </dependency>

      二、在application.yml中添加相關(guān)配置

      #----------------mybatis plus配置-----------------------
      mybatis-plus:
        # xml掃描,多個目錄用逗號或者分號分隔(告訴 Mapper 所對應(yīng)的 XML 文件位置)
        mapper-locations: classpath:mapper/*.xml
        configuration:
          # 是否開啟自動駝峰命名規(guī)則映射:從數(shù)據(jù)庫列名到Java屬性駝峰命名的類似映射
          map-underscore-to-camel-case: true
          # 如果查詢結(jié)果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段
          call-setters-on-nulls: true
          # 這個配置會將執(zhí)行的sql打印出來,在開發(fā)或測試的時候可以用
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        # 實體掃描,多個package用逗號或者分號分隔
        typeAliasesPackage: com.example.study.model.entity
        global-config:
          db-config:
            #主鍵類型 AUTO:"數(shù)據(jù)庫ID自增" INPUT:"用戶輸入ID",ID_WORKER:"全局唯一ID (數(shù)字類型唯一ID)", UUID:"全局唯一ID UUID";
            id-type: auto
            #字段策略 IGNORED:"忽略判斷"  NOT_NULL:"非 NULL 判斷")  NOT_EMPTY:"非空判斷"
            field-strategy: NOT_EMPTY
            #數(shù)據(jù)庫類型
            db-type: MYSQL
            # 邏輯刪除配置
            # 刪除前
            logic-not-delete-value: 1
            # 刪除后
            logic-delete-value: 0
            # 數(shù)據(jù)庫表名的前綴
            table-prefix: t_

      三、新建代碼生成工具類CodeGenerateUtils.java

      package com.example.study.util;
      
      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;
      /**
       * mybatis-plus代碼生成器
       *
       * @author 154594742@qq.com
       * @date 2021/2/24 16:32
       */
      
      public class CodeGenerateUtils {
          /**
           * 讀取控制臺內(nèi)容
           */
          private static String scanner(String tip) {
              Scanner scanner = new Scanner(System.in);
              StringBuilder help = new StringBuilder();
              help.append("請輸入" + tip + ":");
              System.out.println(help.toString());
              if (scanner.hasNext()) {
                  String ipt = scanner.next();
                  if (StringUtils.isNotBlank(ipt)) {
                      return ipt;
                  }
              }
              throw new MybatisPlusException("請輸入正確的" + tip + "!");
          }
      
          /**
           * 運行這個main方法進(jìn)行代碼生成
           */
          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("Code Duck");
              gc.setOpen(false);
              gc.setSwagger2(true); // 實體屬性 Swagger2 注解
              gc.setServiceName("%sService");
              mpg.setGlobalConfig(gc);
      
              // 數(shù)據(jù)源配置
              DataSourceConfig dsc = new DataSourceConfig();
              dsc.setUrl("jdbc:mysql://localhost:3306/study?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
              dsc.setDriverName("com.mysql.cj.jdbc.Driver");
              dsc.setUsername("root");
              dsc.setPassword("123456");
              mpg.setDataSource(dsc);
      
              /*
              包配置,可以根據(jù)自己的項目情況自定義生成后的存放路徑
              entity默認(rèn)路徑為父目錄.entity
              mapper默認(rèn)路徑為父目錄.mapper
              service默認(rèn)路徑為父目錄.service
              serviceImpl默認(rèn)路徑為父目錄.service.impl
              controller默認(rèn)路徑為父目錄.controller
              */
              PackageConfig pc = new PackageConfig();
              pc.setModuleName(null);
              //設(shè)置父目錄
              pc.setParent("com.example.study");
              //自定義entity的生成位置
              pc.setEntity("model.entity");
              mpg.setPackageInfo(pc);
      
              // 自定義配置
              InjectionConfig cfg = new InjectionConfig() {
                  @Override
                  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<>();
              // 自定義配置會被優(yōu)先輸出
              focList.add(new FileOutConfig(templatePath) {
                  @Override
                  public String outputFile(TableInfo tableInfo) {
                      // 自定義輸出文件名 , 如果你 Entity 設(shè)置了前后綴、此處注意 xml 的名稱會跟著發(fā)生變化!!
                      return projectPath + "/src/main/resources/mapper/"
                              + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
                  }
              });
      
              cfg.setFileOutConfigList(focList);
              mpg.setCfg(cfg);
      
              // 配置模板
              TemplateConfig templateConfig = new TemplateConfig();
              templateConfig.setXml(null);
              mpg.setTemplate(templateConfig);
      
              // 策略配置
              StrategyConfig strategy = new StrategyConfig();
              strategy.setNaming(NamingStrategy.underline_to_camel);
              strategy.setColumnNaming(NamingStrategy.underline_to_camel);
              strategy.setEntityLombokModel(true);
              strategy.setRestControllerStyle(true);
              strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
              strategy.setControllerMappingHyphenStyle(true);
              // 設(shè)置表前綴
              strategy.setTablePrefix("t_");
              mpg.setStrategy(strategy);
              mpg.setTemplateEngine(new FreemarkerTemplateEngine());
              mpg.execute();
          }
      }

      四、在數(shù)據(jù)庫中新建一張角色表

      CREATE TABLE `t_role` (
        `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
        `role_name` varchar(32) DEFAULT NULL COMMENT '角色名稱',
        `role_description` varchar(32) DEFAULT NULL COMMENT '角色描述',
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表'

      五、運行工具類中的main方法,然后輸入需要逆向生成代碼的數(shù)據(jù)表名然后回車,然后就可以看到代碼已經(jīng)成功生成了



        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多