MyBatisPlus3.x中使用代碼生成器(全注釋)
場景
MyBaitsPlus3.x與2.x是不一樣的。這里使用3.0.1版本。
官方文檔
https://mp.baomidou.com/guide/generator.html
這里在IDEA上的SpringBoot項目中進行代碼生成測試。
實現(xiàn)
添加依賴
添加 代碼生成器 依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency>
注意:MyBatis-Plus 從 3.0.3 之后移除了代碼生成器與模板引擎的默認依賴,需要手動添加相關依賴
<!-- 模板引擎velocity start--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!-- 模板引擎velocity end--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.1</version> </dependency>
模板引擎
MyBatis-Plus 支持 Velocity(默認)、Freemarker、Beetl,用戶可以選擇自己熟悉的模板引擎。
注意!如果您選擇了非默認引擎,需要在 AutoGenerator 中 設置模板引擎。
AutoGenerator generator = new AutoGenerator(); // set freemarker engine generator.setTemplateEngine(new FreemarkerTemplateEngine()); // set beetl engine generator.setTemplateEngine(new BeetlTemplateEngine()); // set custom engine (reference class is your custom engine class) generator.setTemplateEngine(new CustomTemplateEngine());
編寫代碼
在test下新建單元測試類Generatortest.java
全局配置
//全局配置 GlobalConfig config = new GlobalConfig(); //設置是否支持AR模式 config.setActiveRecord(true) //設置生成代碼的作者 .setAuthor("badaoliumangqizhi") //設置輸出代碼的位置 .setOutputDir("f:output") //.setEnableCache(false)// XML 二級緩存 //.setBaseResultMap(true)// XML ResultMap //.setBaseColumnList(true)// XML columList //.setKotlin(true) 是否生成 kotlin 代碼 //設置是否覆蓋原來的代碼 .setFileOverride(true);
數(shù)據(jù)源配置
//數(shù)據(jù)庫連接url String dbUrl = "jdbc:sqlserver://;DatabaseName="; //數(shù)據(jù)源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); //數(shù)據(jù)庫類型 枚舉 dataSourceConfig.setDbType(DbType.SQL_SERVER) //設置url .setUrl(dbUrl) //設置用戶名 .setUsername("") //設置密碼 .setPassword("") //設置數(shù)據(jù)庫驅動 .setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver") // 自定義數(shù)據(jù)庫表字段類型轉換【可選】 .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; } //將數(shù)據(jù)庫中datetime轉換成date if ( fieldType.toLowerCase().contains( "datetime" ) ) { return DbColumnType.DATE; } return (DbColumnType) super.processTypeConvert(globalConfig, fieldType); } });
策略配置
//策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig //全局大寫命名是否開啟 .setCapitalMode(true) //【實體】是否為lombok模型 .setEntityLombokModel(true) //表名生成策略 下劃線轉駝峰 .setNaming(NamingStrategy.underline_to_camel) //自動填充設置 //.setTableFillList(tableFillList) //修改替換成你需要的表名,多個表名傳數(shù)組 .setInclude("wms_receive_order");
集成注入配置
//注入全局設置 new AutoGenerator().setGlobalConfig(config) //注入數(shù)據(jù)源配置 .setDataSource(dataSourceConfig) //注入策略配置 .setStrategy(strategyConfig) //設置包名信息 .setPackageInfo( new PackageConfig() //提取公共父級包名 .setParent("com.badao.bus.sys") //設置controller信息 .setController("controller") //設置實體類信息 .setEntity("entity") ) //設置自定義模板 .setTemplate( new TemplateConfig() //.setXml(null)//指定自定義模板路徑, 位置:/resources/templates/entity2.java.ftl(或者是.vm) //注意不要帶上.ftl(或者是.vm), 會根據(jù)使用的模板引擎自動識別 // 自定義模板配置,模板可以參考源碼 /mybatis-plus/src/main/resources/template 使用 copy // 至您項目 src/main/resources/template 目錄下,模板名稱也可自定義如下配置: // .setController("..."); // .setEntity("..."); // .setMapper("..."); // .setXml("..."); // .setService("..."); .setServiceImpl("templates/serviceImpl.java") ) //開始執(zhí)行代碼生成 .execute(); }
完整生成器代碼
package com.ws.test.generator; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; import com.baomidou.mybatisplus.generator.config.po.TableFill; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import org.junit.Test; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.util.ArrayList; import java.util.List; /** * Created by badado on 2019/4/25. */ public class Generatortest { @Test public void generateTest(){ //全局配置 GlobalConfig config = new GlobalConfig(); //設置是否支持AR模式 config.setActiveRecord(true) //設置生成代碼的作者 .setAuthor("badaoliumangqizhi") //設置輸出代碼的位置 .setOutputDir("f:output") //.setEnableCache(false)// XML 二級緩存 //.setBaseResultMap(true)// XML ResultMap //.setBaseColumnList(true)// XML columList //.setKotlin(true) 是否生成 kotlin 代碼 //設置是否覆蓋原來的代碼 .setFileOverride(true); //******************************數(shù)據(jù)源配置*************************************** //數(shù)據(jù)庫連接url String dbUrl = "jdbc:sqlserver://;DatabaseName="; //數(shù)據(jù)源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); //數(shù)據(jù)庫類型 枚舉 dataSourceConfig.setDbType(DbType.SQL_SERVER) //設置url .setUrl(dbUrl) //設置用戶名 .setUsername("") //設置密碼 .setPassword("") //設置數(shù)據(jù)庫驅動 .setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver") // 自定義數(shù)據(jù)庫表字段類型轉換【可選】 .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; } //將數(shù)據(jù)庫中datetime轉換成date if ( fieldType.toLowerCase().contains( "datetime" ) ) { return DbColumnType.DATE; } return (DbColumnType) super.processTypeConvert(globalConfig, fieldType); } }); //******************************策略配置****************************************************** // 自定義需要填充的字段 數(shù)據(jù)庫中的字段 List<TableFill> tableFillList = new ArrayList<>(); tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)); tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE)); tableFillList.add(new TableFill("creator_id", FieldFill.INSERT)); tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT)); tableFillList.add(new TableFill("available_flag", FieldFill.INSERT)); tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT)); tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT)); //策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig //全局大寫命名是否開啟 .setCapitalMode(true) //【實體】是否為lombok模型 .setEntityLombokModel(true) //表名生成策略 下劃線轉駝峰 .setNaming(NamingStrategy.underline_to_camel) //自動填充設置 .setTableFillList(tableFillList) //修改替換成你需要的表名,多個表名傳數(shù)組 .setInclude("wms_receive_order"); //集成注入設置 //注入全局設置 new AutoGenerator().setGlobalConfig(config) //注入數(shù)據(jù)源配置 .setDataSource(dataSourceConfig) //注入策略配置 .setStrategy(strategyConfig) //設置包名信息 .setPackageInfo( new PackageConfig() //提取公共父級包名 .setParent("com.badao.bus.sys") //設置controller信息 .setController("controller") //設置實體類信息 .setEntity("entity") ) //設置自定義模板 .setTemplate( new TemplateConfig() //.setXml(null)//指定自定義模板路徑, 位置:/resources/templates/entity2.java.ftl(或者是.vm) //注意不要帶上.ftl(或者是.vm), 會根據(jù)使用的模板引擎自動識別 // 自定義模板配置,模板可以參考源碼 /mybatis-plus/src/main/resources/template 使用 copy // 至您項目 src/main/resources/template 目錄下,模板名稱也可自定義如下配置: // .setController("..."); // .setEntity("..."); // .setMapper("..."); // .setXml("..."); // .setService("..."); .setServiceImpl("templates/serviceImpl.java") ) //開始執(zhí)行代碼生成 .execute(); } }
效果
運行測試
生成成功后會自動彈出生成代碼的目錄
到此這篇關于MyBatisPlus3.x中使用代碼生成器(全注釋)的文章就介紹到這了,更多相關MyBatisPlus3.x代碼生成器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot掃描引入jar包的service等組件方式
這篇文章主要介紹了springboot掃描引入jar包的service等組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07RabbitMQ實現(xiàn)延時消息的兩種方法實戰(zhàn)教程
這篇文章主要介紹了RabbitMQ實現(xiàn)延時消息的兩種方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)
這篇文章主要介紹了Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析,結合實例形式較為詳細的分析說明了jdk1.4,jdk1.5和jdk1.6版本的使用區(qū)別,需要的朋友可以參考下2015-12-12