mybatisplus自動1秒一鍵生成代碼,這次是真的起飛了

2020-10-11 程序猿peapeay

項目原始目錄

必備依賴

用於連接資料庫後根據模板生成文件

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency>

生成文件代碼,其中幾個重要的點在其他地方比較難找的:

  • 轉換類型,默認使用localdatetime,進行轉換為常用的Date,tinyint轉換為Boolean類型

//tinyint轉換成Boolean if ( fieldType.toLowerCase().contains( "tinyint" ) ) { return DbColumnType.BOOLEAN; } //將資料庫中datetime轉換成date,防止出現自動生成代碼LocalDateTime if ( fieldType.toLowerCase().contains( "datetime" ) ) { return DbColumnType.DATE; }

  • 可以自定義生成文件,比如form實體類和VO實體類

List<FileOutConfig> focList = new ArrayList<>();// 自定義生成文件 focList.add(new FileOutConfig("/templates/entityForm.java.ftl") { @Override public String outputFile(TableInfo tableInfo) { // 自定義輸入文件名稱 \com\springboot\platform\entity\form\ return "D:\\spring\\mybatisplus\\src\\main\\java\\com\\peabody\\mybatisplus\\entity\\form\\" + tableInfo.getEntityName()+"Form" + StringPool.DOT_JAVA; } });

整體配置代碼如下:

package com.peabody.mybatisplus.generate;import com.baomidou.mybatisplus.annotation.DbType;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.converts.MySqlTypeConvert;import com.baomidou.mybatisplus.generator.config.po.TableInfo;import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;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;public class mpgenerate { 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 + "!"); } public static void main(String[] args) { // 代碼生成器 AutoGenerator mpg = new AutoGenerator(); // 選擇 freemarker 引擎,默認 Veloctiy mpg.setTemplateEngine(new FreemarkerTemplateEngine()); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 全局配置 GlobalConfig gc = new GlobalConfig(); gc.setOutputDir("D:\\spring\\mybatisplus\\src\\main\\java"); //生成文件的輸出目錄 gc.setAuthor("peabody"); //作者 gc.setFileOverride(true); //是否覆蓋已有文件 默認值:false gc.setOpen(false); //是否打開輸出目錄 默認值:true gc.setSwagger2(true); //開啟 swagger2 模式 默認false gc.setBaseColumnList(true); //開啟 baseColumnList 默認false gc.setBaseResultMap(true); //開啟 BaseResultMap 默認false gc.setEntityName("%s"); //實體命名方式 默認值:null 例如:%sEntity 生成 UserEntity gc.setMapperName("%sMapper"); //mapper 命名方式 默認值:null 例如:%sDao 生成 UserDao //Mapper xml 命名方式 默認值:null 例如:%sDao 生成 UserDao.xml gc.setServiceName("I%sService"); //service 命名方式 默認值:null 例如:%sBusiness 生成 UserBusiness gc.setServiceImplName("%sService"); //service impl 命名方式 默認值:null 例如:%sBusinessImpl 生成 UserBusinessImpl gc.setControllerName("%sController"); //controller 命名方式 默認值:null 例如:%sAction 生成 UserAction mpg.setGlobalConfig(gc); // 數據源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); //資料庫類型 該類內置了常用的資料庫類型【必須】 dsc.setUrl("jdbc:mysql://127.0.0.1:3306/peapeay?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("peabody"); dsc.setTypeConvert(new MySqlTypeConvert() { @Override public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { System.out.println("轉換類型:" + fieldType); //tinyint轉換成Boolean if ( fieldType.toLowerCase().contains( "tinyint" ) ) { return DbColumnType.BOOLEAN; } //將資料庫中datetime轉換成date,防止出現自動生成代碼LocalDateTime if ( fieldType.toLowerCase().contains( "datetime" ) ) { return DbColumnType.DATE; } return (DbColumnType) super.processTypeConvert(globalConfig, fieldType); } }); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig();// pc.setModuleName(scanner("模塊名")); pc.setParent("com.peabody.mybatisplus"); pc.setEntity("entity.po"); pc.setMapper("dao"); pc.setController("rest"); pc.setService("service"); pc.setServiceImpl("service.impl"); mpg.setPackageInfo(pc); // 自定義配置gateway_ignore InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { //注入自定義 Map 對象 //自定義動作 } }; List<FileOutConfig> focList = new ArrayList<>();// 自定義生成文件 focList.add(new FileOutConfig("/templates/entityForm.java.ftl") { @Override public String outputFile(TableInfo tableInfo) { // 自定義輸入文件名稱 \com\springboot\platform\entity\form\ return "D:\\spring\\mybatisplus\\src\\main\\java\\com\\peabody\\mybatisplus\\entity\\form\\" + tableInfo.getEntityName()+"Form" + StringPool.DOT_JAVA; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); mpg.setTemplate(new TemplateConfig().setXml(null)); // 策略配置 資料庫表配置,通過該配置,可指定需要生成哪些表或者排除哪些表 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); //表名生成策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//資料庫表欄位映射到實體的命名策略, 未指定按照 naming 執行// strategy.setCapitalMode(true); // 全局大寫命名 ORACLE 注意// strategy.setTablePrefix("prefix"); //表前綴// strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity"); //自定義繼承的Entity類全稱,帶包名// strategy.setSuperEntityColumns(new String[] { "test_id", "age" }); //自定義實體,公共欄位 strategy.setEntityLombokModel(true); //【實體】是否為lombok模型(默認 false strategy.setRestControllerStyle(true); //生成 @RestController 控制器// strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController"); //自定義繼承的Controller類全稱,帶包名 strategy.setInclude(scanner("table_name")); //需要包含的表名,允許正則表達式(與exclude二選一配置)// strategy.setInclude(new String[] { "user" }); // 需要生成的表可以多張表// strategy.setExclude(new String[]{"test"}); // 排除生成的表 strategy.setControllerMappingHyphenStyle(true); //駝峰轉連字符 strategy.setTablePrefix(pc.getModuleName() + "_"); //是否生成實體時,生成欄位註解 mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }


歐克,起飛了


當然ftl可以自定義,不一定適配我的模板,輸入表格名稱後生成文件


執行結果

執行後生成的文件列表

生成文件

ftl模板可以去mybatisplus官網GitHub上下載,內容太多不在此貼出來了

相關焦點

  • 代碼一鍵自動生成,拿走不謝
    文章目錄前言起源環境實戰sql腳本pom.xmlapplication.yml啟動類代碼自動生成controller類測試前言隔壁老王: 社長,我工作有一段時間咯,我看其他的同事,上班都很悠閒,而且,那些實體類,感覺有模板似的
  • 實戰:一鍵生成前後端代碼,Mybatis-Plus代碼生成器讓我舒服了
    項目介紹本項目將以springboot用演示,前端使用freemaker,資料庫持久層用mybatis(考慮到mybatis的使用還是最普遍的,就沒有用jpa和mybatisplus),通過Velocity模板引擎配置各模塊的文件模板,通過mybatis-plus代碼生成器連接mysql,用商品表為例生成各模塊的代碼和前端頁面
  • Springboot+MybatisPlus高效實現增刪改查
    Mybatis-Plus基於mybatis做了增強,大大簡化了單表CRUD操作,而且Mybatis-Plus是無侵入性的,不會影響現有項目,Mybatis-Plus提供了代碼生成器,可以根據資料庫表一鍵生成對應的service、mapper、xml文件,service和mapper提供了豐富的CRUD操作方法,xml文件也是非常簡潔。
  • MyBatisPlus極速入門
    Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用內置分頁插件:基於 MyBatis 物理分頁,開發者無需關心具體操作,配置好插件之後,寫分頁等同於普通 List 查詢分頁插件支持多種資料庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL
  • 利用它生成代碼效率高了一百倍
    -- mybatisplus生成工具需要的依賴 --><dependency><groupId>com.baomidou</groupId><artifactId
  • 利用它生成代碼,效率高了100倍不止
    -- mybatisplus生成工具需要的依賴 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.0.6<
  • 史上最全的SpringBoot 中引入 MyBatisPlus 的常規流程!|乾貨
    二、通用 CRUD通過本項目(表少,數據量大,非常適合)發現 MyBatisPlus 在單表 CRUD方面比原來的的 MyBatis 的有著絕對優勢:下面列出本文相關代碼,其他代碼如 Druid數據源配置、MyBatisPlus分頁配置、sql輸出配置,可以到 github 上查看:package com.cun.plus;import com.baomidou.mybatisplus.mapper.Wrapper
  • 嵌入式系統自動代碼生成淺談
    眾多周知,汽車電控軟體開發普遍遵循V流程,而自動代碼生成是V流程中極其重要的一環。,腳友群裡也有腳友諮詢自動代碼生成相關的標定量設置問題。這裡就不談自動代碼生成的背景、意義,直接介紹具體的操作步驟吧。Simulink模型設置首先,需要一個搭建完成的Simulink模型,如下圖所示,模型有一個子系統func1。
  • Dave:Node一鍵生成CRUD代碼,又一款極其好用的代碼生成器
    項目特色在線解析自動生成接口文檔,清晰可讀永遠最新自動校驗與格式化,支持高亮和收展自動生成各種語言代碼,一鍵下載自動管理與測試接口用例,一鍵共享自動給請求JSON加注釋,一鍵切換對於前端不用再向後端催接口、求文檔數據和結構完全定製
  • 福利|一段代碼讓你自動生成PPT報告
    分享一段VBA代碼,讓你真正實現自動生成PPT報告,徹底解放雙手!01實現效果在Excel文件中填寫需要在PPT中展示的內容,裡面的名稱和內容都可任意修改。一鍵運行代碼,則自動生成包含上述信息的PPT頁面。睜!大!眼!睛!
  • SpringBoot+Gradle+ MyBatisPlus3.x搭建企業級的後臺分離框架
    1、技術選型解析器:FastJSON開發工具:JDK1.8 、Gradle、IDEA技術框架:SpringBoot 2.1.5.RELEASEORM技術:MyBatisPlus3.1.2資料庫:MySQL8.0.21Apache
  • Mybatisplus-plus 1.0.0 發布,掃描 Entity 類構建 ResultMap 主鍵...
    MybatisPlus-plus 1.0.0增加了自動填充優化功能 和 自動掃描Entity類構建ResultMap
  • Spring系列——MybatisPlus
    後者雖然減少了很多繁瑣的SQL內容編寫,但是同樣的,對於複雜的SQL場景,類似流似的SQL生成還是沒有XML寫法直觀。2.:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心欄位寫錯支持主鍵自動生成
  • 代碼自動生成工具
    ASP.NET Maker破解版是一款十分專業的代碼自動生成工具,該軟體界面直觀,生成的代碼乾淨,初學者也可輕鬆掌握,能夠節省大量的使用時間,並具有組織和維護代碼的過程,可從SQL伺服器和其他資料庫中以C語言快速生成ASP.NET Web應用程式;軟體可以幫助用戶快速地根據資料庫連接資料來源中生成一套完整的ASP.NET程序,也可以直接從SQL Server,MySQL,PostgreSQL,
  • EasyCode的使用,自動生成代碼
    EasyCode的使用,自動生成代碼做Java的項目開發,會使用各種代碼自動生成工具,今天就來介紹一款EasyCode插件,廢話不多說了,看看怎麼安裝和使用。資料庫配置自動生產代碼選中表點擊右鍵選擇EasyCode->Generate Code,點擊後會彈出基本的配置,比如包名、目錄、模板等
  • 想擺脫寫重複代碼,就部署個代碼生成器,一鍵生成前後端
    基於SpringBoot2+Freemarker的代碼生成器,用DDL SQL語句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相關代碼,支持mysql/oracle/pgsql三大資料庫。以釋放雙手為目的,各大模板也在陸續補充和優化。
  • 無需寫代碼!可一鍵生成前後端代碼的開源工具
    作者 | HelloGitHub-小魚乾來源 | HelloGitHub(ID:GitHub520)頭圖 | CSDN 下載自東方ICJeecgBoot 是一款基於代碼生成器的低代碼開發平臺,零代碼開發。
  • 用代碼生成音樂?滴滴程式設計師這次玩得有點高級
    聽得見的代碼普通人很難看懂代碼,卻有機會聽懂代碼。在微信小程序「代碼變音樂」裡,選擇滴滴的「口罩檢測」、「智能派單」等功能,點下「生成音樂」按鈕,它們背後密密麻麻、艱澀難懂的代碼,在「轉換機」裡流轉,經由映射,便被轉為風格各異的音樂。
  • 可一鍵生成dao、表、controller等幾十種的代碼生成器源碼分享
    簡介代碼生成器源碼,可一鍵生成controller,service,,實體類,單表、多表的sql語句,日誌處理、事務支持等,同時可以生成dubbo和springCloud腳手架方便開發微服務項目,能在很大程度上提高開發效率,節約開發時間。代碼生成完畢後即為一個前臺到後臺的完整項目。
  • 4個施工方案自動生成軟體,一鍵即可自動生成
    今天給大家分享4個施工資料自動生成軟體,分別為施工方案自動生成軟體、技術交底自動生成軟體、施工進度自動生成軟體和施工圖設計自動生成軟體,一鍵即可自動生成,大大節省我們的工作時間,再也不用再熬夜整理施工方案了。