<p id="rrtt5"></p><ruby id="rrtt5"></ruby>

      系統城裝機大師 - 唯一官網:www.1999hs.com!

      當前位置:首頁 > 網絡編程 > JavaScript > 詳細頁面

      SpringBoot下使用MyBatis-Puls代碼生成器的方法

      時間:2020-10-19來源:www.1999hs.com作者:電腦系統城

      1.官方地址:

      http://mybatis.plus/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B

      2.數據庫結構:

      在這里插入圖片描述

      3.依賴導入

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
           <version>5.1.39</version>
         </dependency>
             <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.4.0</version>
         </dependency>
         <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-generator</artifactId>
           <version>3.4.0</version>
         </dependency>
       
         <dependency>
           <groupId>org.freemarker</groupId>
           <artifactId>freemarker</artifactId>
           <version>2.3.30</version>
         </dependency>
         <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
         </dependency>

      配置freemarker是因為myBatis中默認的引擎是freemarker,支持自定義引擎

      3.目錄結構

      在這里插入圖片描述

      4.官方生成器類

      CodeGenerator

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      public class CodeGenerator {
        /**
         * <p>
         * 讀取控制臺內容
         * </p>
         */
        public 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 + "!");
        }
       
        public static void main(String[] args) {
          // 代碼生成器
          AutoGenerator mpg = new AutoGenerator();
       
          // 全局配置
          GlobalConfig gc = new GlobalConfig();
          String projectPath = System.getProperty("user.dir");
          /**
           * 這里需要設定一下保存的地址是本項目下的/src/main/java
           */
          gc.setOutputDir(projectPath + "/maven1018/src/main/java");
          gc.setAuthor("XYD");
          gc.setOpen(false);
          // gc.setSwagger2(true); 實體屬性 Swagger2 注解
          mpg.setGlobalConfig(gc);
       
          // 數據源配置
          /**
           * 設置數據庫名稱和數據庫賬戶密碼
           */
          DataSourceConfig dsc = new DataSourceConfig();
          dsc.setUrl("jdbc:mysql://localhost:3306/temporary?useUnicode=true&useSSL=false&characterEncoding=utf8");
          // dsc.setSchemaName("public");
          dsc.setDriverName("com.mysql.jdbc.Driver");
          dsc.setUsername("root");
          dsc.setPassword("12345");
          mpg.setDataSource(dsc);
       
          // 包配置
          /**
           * 設置生成文件保存地址,模塊名為命令窗口輸入的模塊名
           */
          PackageConfig pc = new PackageConfig();
          pc.setModuleName(scanner("模塊名"));
          pc.setParent("com.baomidou.ant");
          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";
       
          /**
           * 這里定義的是生成xml文檔的輸出配置,存放在resource下
           */
          // 自定義輸出配置
      //    List<FileOutConfig> focList = new ArrayList<>();
          // 自定義配置會被優先輸出
      //    focList.add(new FileOutConfig(templatePath) {
      //      @Override
      //      public String outputFile(TableInfo tableInfo) {
      //        // 自定義輸出文件名 , 如果你 Entity 設置了前后綴、此處注意 xml 的名稱會跟著發生變化??!
      //        return projectPath + "/maven1018/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"); //注釋這行否則生成的實體類中沒有Id變量
       
          strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
          strategy.setControllerMappingHyphenStyle(true);
          strategy.setTablePrefix(pc.getModuleName() + "_");
          mpg.setStrategy(strategy);
          mpg.setTemplateEngine(new FreemarkerTemplateEngine());
          mpg.execute();
        }
       
      }

      5. 代碼生成后的配置

      • 默認生成的代碼中實體類是沒有id屬性的,在代碼生成類中注釋掉strategy.setSuperEntityColumns("id");
      • 默認生成的mapper對象上是沒有@Mapper注解,需要在主配置類中加入@MapperScan注解,進行mapper掃描
      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      @SpringBootApplication
      @MapperScan("com.example.crount.mapper")
      public class Demo1018Application {
       
        public static void main(String[] args) {
          SpringApplication.run(Demo1018Application.class, args);
        }
       
      }

      另外自己要運行代碼進行數據庫訪問,所以application.properties中也要配置數據源

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      # 數據庫配置
      spring.datasource.url=jdbc:mysql:///temporary?characterEncoding=utf-8&useSSL=false
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver
      spring.datasource.username=root
      spring.datasource.password=12345
       
      #連接池配置
      #spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

      6.controller開發

      注入service,修改訪問的地址,寫入訪問的方法

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      @RestController
      public class StudentController {
       
        @Autowired
        private IStudentService studentService;
       
        @GetMapping("/demo1")
        public String m1(){
          Student student = studentService.getById(3);
          return student.getSSex();
        }
       
      }

      7.生成的代碼放到主配置類的同級目錄下,運行代碼

      在這里插入圖片描述

      到此這篇關于SpringBoot下使用MyBatis-Puls代碼生成器的方法的文章就介紹到這了

      分享到:

      相關信息

      系統教程欄目

      欄目熱門教程

      人氣教程排行

      站長推薦

      熱門系統下載

      天堂资源中文WWW,久久精品女人天堂AV免费观看,无码专区一ⅤA亚洲V天堂,免费观看在线AⅤ天堂视频