激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

2021-12-20 13:41縱有千千星晚 Java教程

在JavaWeb工程中,每一個SSM新項目或者說是SpringBoot項目也好,都少不了model、controller、service、dao等層次的構建。使用mybatis-plus逆向可以自動生成,感興趣的可以了解一下

1.在你的SpringBoot項目下新建子模塊項目

pom.xml添加以下依賴:

<properties>
      <java.version>1.8</java.version>
  </properties>

  <dependencies>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-generator</artifactId>
          <version>3.3.2</version>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-extension</artifactId>
          <version>3.3.2</version>
      </dependency>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-freemarker</artifactId>
          <version>2.3.1.RELEASE</version>
      </dependency>
  </dependencies>

  <build>
      <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
  </build>

ps:名稱隨意,最好帶上generator 來辨別這是代碼自動生成模塊

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

 

2.在此模塊下新建一個包與一個java類 類名: CodeGenerator

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

完整代碼如下:

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.DateType;
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;

/**
* @Description: 代碼生成類
*/
public class CodeGenerator {
  //數據庫連接參數
  public static String driver = "com.mysql.cj.jdbc.Driver";
  public static String url = "jdbc:mysql://localhost:3306/rht_test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true";
  public static String username="root";
  public static String password="123456";
  //父級別包名稱
  public static String parentPackage = "cn.rht";
  //代碼生成的目標路徑
  public static String generateTo = "/rht-generator/src/main/java";
  //mapper.xml的生成路徑
  public static String mapperXmlPath = "/rht-generator/src/main/resources/mapper";
  //控制器的公共基類,用于抽象控制器的公共方法,null值表示沒有父類
  public static String baseControllerClassName ;
  //業務層的公共基類,用于抽象公共方法
  public static String baseServiceClassName ;
  //作者名
  public static String author = "rht.cn";
  //模塊名稱,用于組成包名
  public static String modelName = "portal";
  //Mapper接口的模板文件,不用寫后綴 .ftl
  public static String mapperTempalte = "/ftl/mapper.java";

  /**
   * <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.isNotEmpty(ipt)) {
              return ipt;
          }
      }
      throw new MybatisPlusException("請輸入正確的" + tip + "!");
  }

  /**
   * RUN THIS
   */
  public static void main(String[] args) {
      // 代碼生成器
      AutoGenerator mpg = new AutoGenerator();

      // 全局配置
      GlobalConfig gc = new GlobalConfig();
      String projectPath = System.getProperty("user.dir");
      gc.setOutputDir(projectPath + generateTo);
      gc.setAuthor(author);
      gc.setOpen(false);
      //設置時間類型為Date
      gc.setDateType(DateType.TIME_PACK);
      //開啟swagger
      //gc.setSwagger2(true);
      //設置mapper.xml的resultMap
      gc.setBaseResultMap(true);
      mpg.setGlobalConfig(gc);

      // 數據源配置
      DataSourceConfig dsc = new DataSourceConfig();
      dsc.setUrl(url);
      // dsc.setSchemaName("public");
      dsc.setDriverName(driver);
      dsc.setUsername(username);
      dsc.setPassword(password);
      mpg.setDataSource(dsc);

      // 包配置
      PackageConfig pc = new PackageConfig();
      pc.setEntity("model");
      //pc.setModuleName(scanner("模塊名"));
      pc.setModuleName(modelName);
      pc.setParent(parentPackage);
      mpg.setPackageInfo(pc);

      // 自定義配置
      InjectionConfig cfg = new InjectionConfig() {
          @Override
          public void initMap() {
              // to do nothing
          }
      };
      List<FileOutConfig> focList = new ArrayList<>();
      focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
          @Override
          public String outputFile(TableInfo tableInfo) {
              // 自定義輸入文件名稱
              return projectPath + mapperXmlPath
                      + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
          }
      });
      cfg.setFileOutConfigList(focList);
      mpg.setCfg(cfg);
      mpg.setTemplate(new TemplateConfig().setXml(null));
      mpg.setTemplate(new TemplateConfig().setMapper(mapperTempalte));

      // 策略配置
      StrategyConfig strategy = new StrategyConfig();
      strategy.setNaming(NamingStrategy.underline_to_camel);
      //字段駝峰命名
      strategy.setColumnNaming(NamingStrategy.underline_to_camel);
      //設置實體類的lombok
      strategy.setEntityLombokModel(true);
      //設置controller的父類
      if (baseControllerClassName!=null) strategy.setSuperControllerClass(baseControllerClassName);
      //設置服務類的父類
      if (baseServiceClassName !=null ) strategy.setSuperServiceImplClass(baseServiceClassName);
      // strategy.
      //設置實體類屬性對應表字段的注解
      strategy.setEntityTableFieldAnnotationEnable(true);
      //設置表名
      String tableName = scanner("表名, all全部表");
      if(! "all".equalsIgnoreCase(tableName)){
          strategy.setInclude(tableName);
      }

      strategy.setTablePrefix(pc.getModuleName() + "_");
      strategy.setRestControllerStyle(true);
      mpg.setStrategy(strategy);

      // 選擇 freemarker 引擎需要指定如下加,注意 pom 依賴必須有!
      mpg.setTemplateEngine(new FreemarkerTemplateEngine());
      mpg.execute();
  }

}

 

3.在 resources 下新建 文件夾,用來存放 mapper文件

新建模板文件: mapper.java.ftl

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

模板完整代碼如下:

package ${package.Mapper};

import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import org.springframework.stereotype.Repository;

/**
* <p>
* ${table.comment!} Mapper 接口
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.mapperName} : ${superMapperClass}<${entity}>
<#else>
@Repository
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {

}
</#if>

 

4.配置CodeGenerator類

ps:請根據自己實際路徑配置

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

 

5.啟動代碼生成類main方法

ps:輸入all 將會自動生成配置數據庫下的所有配置文件,或者直接輸入單表名稱生成某一個表的Controller,mapper,service,model層與mapper.xml文件

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

下面是我輸入表名為:user,自動生成的部分文件信息展示

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

User實體類

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

UserMapper.xml文件

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

如果你有很多表要生成時,但又不想全部生成時,可以在CodeGenerator類代碼中134行代碼

//設置表名
      String tableName = scanner("表名, all全部表");
      if(! "all".equalsIgnoreCase(tableName)){
          strategy.setInclude(tableName);
      }

替換為:

String[] tableNames = {"user","dept"};//數據庫表名的集合
for (int i = 0; i <tableNames.length ; i++) {
  strategy.setInclude(tableNames);
}

來生成自己想要生成的文件

 

6.刪除文件

最后:也是重要的一點,在您將這些文件復制到了項目模塊上的時候,留下CodeGenerator類與文件夾下的mapper.java.ftl配置,其他生成的請及時刪除

至于原因是將來業務拓展后,數據庫新增表后,只要新創建表的文件,如果不刪除以前生成過的文件,到時候找起來比較麻煩,沒必要給自己添這層麻煩

SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

到此這篇關于SpringBoot項目使用mybatis-plus逆向自動生成全套代碼的文章就介紹到這了,更多相關mybatis-plus逆向自動生成代碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_44980116/article/details/112381136

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 欧美1区2区 | 黑人一级片视频 | 午夜精品一区二区三区免费 | 亚洲国产高清自拍 | 一区二区三区手机在线观看 | 国产精品久久久久影院老司 | 国产精品成人久久久久a级 av电影在线免费 | 超碰人人做人人爱 | 欧美精品一区二区三区四区 | 天天躁狠狠躁夜躁2020挡不住 | 中文字幕一区久久 | av电影网站在线 | 91色成人 | 久久久噜噜噜久久熟有声小说 | www.com国产精品 | 法国性xxx精品hd专区 | 久久久久久久久久美女 | 日本成人午夜 | 欧洲成人免费视频 | 久久草在线视频免费 | 中文字幕亚洲视频 | 国产免费久久久 | 国产精品久久久免费看 | 毛片在线免费 | av成人免费| 污片视频网站 | 国产精品久久久久久238 | 亚洲网站一区 | 日韩激情| 国产在线精品一区二区三区不卡 | 久久精品一二三区白丝高潮 | 可以看逼的视频 | 蜜桃视频在线播放 | 成人在线视频在线观看 | 九色成人在线 | 亚洲午夜不卡 | 女18一级大黄毛片免费女人 | 乱淫67194| 国产精品99久久久久久宅女 | 91av资源在线 | 亚洲精品aa |