MP的代碼生成器介紹
問題:
目前我們在開發SSM項目的時候,會先搭建一個SSM的開發環境。
我們會根據數據庫的表在pojo包中創建對應的實體類,而且可以不
關心項目功能的同時,在mapper層對數據庫的表的基礎增刪改查功
能提前實現,同理,在service層可以將基礎的業務代碼提前聲明。
然后再根據項目功能完成對應的復雜操作。而整個過程需要程序員手動
完成搭建,效率低下。
解決:
創建一個代碼生成類,調用該類的對象,並將對應的數據庫表作為參數傳遞進入
以及一些生成代碼的其他要求也傳遞給該對象,讓該對象幫助我們生成基礎的開發
代碼。
實現:
MP的代碼生成器
作用:
根據數據庫中的表動態的生成表對應的mapper,service,pojo,controller層的基礎代碼,提升開發效率。
[2] MP代碼生成器的使用
1. 導入代碼生成器相關jar包
2. 使用代碼生成器生成代碼
package com.bjsxt.test; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; public class TestCode { public static void main(String[] args) { // 代碼生成器 AutoGenerator mpg = new AutoGenerator(); //全局配置策略 GlobalConfig gc = new GlobalConfig(); String path = System.getProperty("user.dir");//動態獲取當前項目的路徑 System.out.println(path); gc.setFileOverride(false);// 是否覆蓋同名文件,默認是false gc.setActiveRecord(true);// 不需要ActiveRecord特性的請改為false gc.setEnableCache(false);// XML 二級緩存 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(false);// XML columList gc.setOutputDir(path+"/09-mp-code/src"); gc.setIdType(IdType.AUTO);//設置主鍵策略 //數據源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("1234"); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.bjsxt") .setMapper("mapper") .setService("service") .setController("controller") .setEntity("pojo") .setXml("mapper"); //策略配置 StrategyConfig stConfig = new StrategyConfig(); stConfig.setCapitalMode(true) //全局大寫命名 .setNaming(NamingStrategy.underline_to_camel) // 數據庫表映射到實體的命名策略 .setTablePrefix("t_") .setInclude("t_student"); // 生成的表,多個表繼續傳遞即可,String類型的可變參數 //將策略配置對象集成到代碼生成器中 mpg.setGlobalConfig(gc); mpg.setDataSource(dsc); mpg.setPackageInfo(pc); mpg.setStrategy(stConfig); //執行生成 mpg.execute(); } }