mybatis-plus之程式碼生成器
阿新 • • 發佈:2018-12-17
當我們需要對資料庫操作時,常規的做法是建立dao,service,controller,mapper.xml檔案,一系列繁瑣的操作讓我們總在做無用功,以前可以用逆向工程生成,現在mybatis-plus也給我們提供了模板,而且功能更加的靈活和強大,我們只要配置好基本的引數,就可以自動生成了,下面正式開始奇蹟之旅吧!
1、pom檔案
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> </parent> <dependencies> <!-- spring-boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mybatis-plus自動的維護了mybatis以及mybatis-spring的依賴, 在springboot中這三者不能同時的出現,避免版本的衝突,表示:跳進過這個坑--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.1</version> </dependency> <!-- 引入Druid依賴,阿里巴巴所提供的資料來源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency> <!-- 提供mysql驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> </dependency> </dependencies>
2、啟動類
package com.springboot.mybatisplus; import com.baomidou.mybatisplus.core.toolkit.StringPool; 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.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.util.ArrayList; import java.util.List; /** * @Description: * @Auther: chenmingjian * @Date: 18-10-25 18:14 */ public class CodeGenerator { //作者 private static final String author = "chenmingjian"; //資料庫 private static final String url = "jdbc:mysql://192.168.3.172:3306/poc?useUnicode=true&useSSL=false&characterEncoding=utf8"; private static final String driverName = "com.mysql.jdbc.Driver"; private static final String userName = "devuser"; private static final String password = "dev123"; private static final String table_name = "tb_test_student"; //表對應的基類名 private static final String entityName = "Student"; //如StudentController,StudentService private static final String name_prex = "Student"; //生成在該目錄下 private static final String package_name = "com.springboot.mybatisplus"; public static void main(String[] args) { // 程式碼生成器 AutoGenerator mpg = new AutoGenerator(); // 全域性配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor(author); gc.setOpen(false); gc.setEntityName(entityName); gc.setMapperName(name_prex + "Mapper"); gc.setControllerName(name_prex + "Controller"); gc.setServiceName(name_prex + "Service"); gc.setServiceImplName(name_prex + "ServiceImpl"); mpg.setGlobalConfig(gc); // 資料來源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl(url); // dsc.setSchemaName("public"); dsc.setDriverName(driverName); dsc.setUsername(userName); dsc.setPassword(password); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); //pc.setModuleName(scanner("模組名")); pc.setParent(package_name); 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 + "/src/main/resources/mapper/" /*+ pc.getModuleName()*/ + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); 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); // strategy.setSuperEntityClass("com.baomidou.ant.common.BaseEntity"); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); // strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController"); strategy.setInclude(table_name); strategy.setSuperEntityColumns("id"); strategy.setControllerMappingHyphenStyle(true); strategy.setTablePrefix(pc.getModuleName() + "_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }
3、生成結果展示