spring-boot mybatis-plus3.x 集成 + 代码生成器自定义controller 模板

创建maven项目

添加maven 依赖



        3.3.0




    com.baomidou
    mybatis-plus-boot-starter
    ${mybatis-plus.version}


    mysql
    mysql-connector-java


    com.baomidou
    mybatis-plus-generator
    ${mybatis-plus.version}


    org.freemarker
    freemarker
    2.3.28

取mybatis-plus的模板

spring-boot mybatis-plus3.x 集成 + 代码生成器自定义controller 模板_第1张图片
所有的模板文件都在里面,我使用的是freemarker模板,所以取的是.ftl后缀名的文件。

创建目录

在resources下面创建templatesFreeMybatis目录

拷贝所有的.ftl文件

定义生成代码Main方法

文件内容如下:

package com.dcy.generator;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
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.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.*;

/**
 * @Author:dcy
 * @Description: mybatis-plus 代码生成器
 * @Date: 2019/9/6 13:47
 */
public class MpGenerator {

    //生成文件位置
    private static final String PACK = "E://test//";
    private static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/xxxxx?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC";
    private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "xxxxx";

    //生成的模块名称
    private static String modulesName = "部门";

    /**
     * 

* cert * app_certificate * 读取控制台内容 *

*/ 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(); //开启 BaseResultMap gc.setBaseResultMap(true); // 主键自增 gc.setIdType(IdType.ASSIGN_ID); //开启 baseColumnList gc.setBaseColumnList(true); gc.setSwagger2(true); gc.setFileOverride(true); //gc.setOutputDir(projectPath + "/mybatis-plus-sample-generator/src/main/java"); // 生成文件的输出目录 gc.setOutputDir(PACK); //开发人员 gc.setAuthor("dcy"); // 是否打开输出目录 gc.setOpen(false); mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl(DB_URL); dsc.setDriverName(DRIVER_NAME); dsc.setUsername(USERNAME); dsc.setPassword(PASSWORD); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.dcy.modules"); pc.setEntity("model"); pc.setXml("mapper"); String models = scanner("模块名"); //父包模块名 pc.setModuleName(models); mpg.setPackageInfo(pc); setTemplateMapper(mpg, models); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); strategy.setEntityLombokModel(true); // 设置父类 strategy.setSuperControllerClass("com.dcy.db.base.controller.BaseController"); strategy.setSuperEntityClass("com.dcy.db.base.model.BaseModel"); strategy.setSuperServiceClass("com.dcy.db.base.service.BaseService"); strategy.setSuperServiceImplClass("com.dcy.db.base.service.impl.BaseServiceImpl"); strategy.setInclude(scanner("表名")); strategy.setControllerMappingHyphenStyle(true); strategy.setEntityColumnConstant(true); strategy.setRestControllerStyle(true); mpg.setStrategy(strategy); // 选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有! mpg.setTemplateEngine(new FreemarkerTemplateEngine()); TemplateConfig tc = new TemplateConfig(); tc.setController("/templatesFreeMybatis/controller.java"); tc.setService("/templatesFreeMybatis/service.java"); tc.setServiceImpl("/templatesFreeMybatis/serviceImpl.java"); tc.setEntity("/templatesFreeMybatis/entity.java"); tc.setMapper("/templatesFreeMybatis/mapper.java"); tc.setXml("/templatesFreeMybatis/mapper.xml"); mpg.setTemplate(tc); mpg.execute(); } private static void setTemplateMapper(AutoGenerator mpg, String models) { String modulesUp = models.substring(0, 1).toUpperCase() + models.substring(1); // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】 ${cfg.abc} InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { Map map = new HashMap(); map.put("modulesName", modulesName); map.put("modulesApi",models); map.put("modules",modulesUp); this.setMap(map); } }; mpg.setCfg(cfg); } }

注意:所有的父类需要制定自己的父类,如果没有父类删掉即可。

你可能感兴趣的:(spring,boot)