美文网首页
Mybatis-Plus 代码自动生成器 Generator使用

Mybatis-Plus 代码自动生成器 Generator使用

作者: JaxMa | 来源:发表于2019-11-17 20:38 被阅读0次

MybatisPlus的代码自动生成器

通常我们写后端业务代码的时候免不了总是要生成一系列的:controller ,service, mapper ,entity等。

通过使用mybatis-plus 的generator的使用,可以自动根据数据表的字段,生成对应的entity等,面去繁琐的重复劳动力。

如何使用?

1.引入以下的两个denpency

        
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.2.0</version>
    </dependency>
    <!-- 以下这个是默认的template 引擎 -->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.1</version>
    </dependency>    

2.MPGenerator 复制到你的项目目录下

3.修改以下配置:

  //数据库配置
        String dataBaseUrl = "jdbc:mysql://localhost:3306/db_anti_deception?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC";
        String DataBaseDriver = "com.mysql.jdbc.Driver";
        String userName = "root";
        String password = "123456";
        //作者名,用于生成文件注解时使用。
        String author = "mahaibin";

        //表名,多表使用逗号分开
        final String tableName = "t_task";
        //controller的url请求是否使用 "-" 形式如: true :/case-info false:/caseInfo
        boolean controllerMappingHyphenStyle = false;
        // 是否使用lombok
        boolean useLombok = true;
        //表是否有前缀(t_case),如果不配置, 那生成的Entity会是:TCase
        String tablePrefix = "t_";
        //controller文件是不是带RestController
        boolean restControllerStyle = true;
        //entity是否需要继承父类,如果需要则将已有的父类路径写下面,同理可配置Controller等父类。
        String superEntityClass = "cn.jiguang.antideception.admin.antideceptionadmin.common.entity.BaseEntity";
        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 ,使用系统默认传null
        String entityTemplate = "vmtempl/entity.java";
        String serviceTemplate = "vmtempl/service.java";
        String controllerTemplate = "vmtempl/controller.java";
        String serviceImplTemplate = "vmtempl/serviceImpl.java";
        String mapperTemplate = "vmtempl/mapper.java";
  1. 修改template文件
    一般情况下默认的模板时可以满足生成的需求的,但是有时候我们需要修改模板,做一些我们自己的定制化,只需要复制源template 的文件到自己的resource 目录下 ,并且配置第三步骤中的 xxxtemplate就可以。
    对于在template 文件中出现的参数(如:${superEntityClass})的注入请看: AbstractTemplateEngin 中的:getObjectMap()中对 objectMap 的设置。 也可直接看本文末附件
    以下展示修改类注解:
  • before:

/**
 * <p>
 * $!{table.comment}
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${entityLombokModel})
@Data
#if(${superEntityClass})
@EqualsAndHashCode(callSuper = true)
#else
@EqualsAndHashCode(callSuper = false)
#end
  • after:
/**
 * @ProjectName: anti-deception-admin
 * @Package: ${package.Entity}
 * @ClassName: ${entity}
 * @Author: ${author}
 * @Description:
 * @Date: ${date}
 */

#if(${entityLombokModel})
@Data
附件 参数注入设置
 objectMap.put("restControllerStyle", config.getStrategyConfig().isRestControllerStyle());
        objectMap.put("config", config);
        objectMap.put("package", config.getPackageInfo());
        GlobalConfig globalConfig = config.getGlobalConfig();
        objectMap.put("author", globalConfig.getAuthor());
        objectMap.put("idType", globalConfig.getIdType() == null ? null : globalConfig.getIdType().toString());
        objectMap.put("logicDeleteFieldName", config.getStrategyConfig().getLogicDeleteFieldName());
        objectMap.put("versionFieldName", config.getStrategyConfig().getVersionFieldName());
        objectMap.put("activeRecord", globalConfig.isActiveRecord());
        objectMap.put("kotlin", globalConfig.isKotlin());
        objectMap.put("swagger2", globalConfig.isSwagger2());
        objectMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        objectMap.put("table", tableInfo);
        objectMap.put("enableCache", globalConfig.isEnableCache());
        objectMap.put("baseResultMap", globalConfig.isBaseResultMap());
        objectMap.put("baseColumnList", globalConfig.isBaseColumnList());
        objectMap.put("entity", tableInfo.getEntityName());
        objectMap.put("entitySerialVersionUID", config.getStrategyConfig().isEntitySerialVersionUID());
        objectMap.put("entityColumnConstant", config.getStrategyConfig().isEntityColumnConstant());
        objectMap.put("entityBuilderModel", config.getStrategyConfig().isEntityBuilderModel());
        objectMap.put("entityLombokModel", config.getStrategyConfig().isEntityLombokModel());
        objectMap.put("entityBooleanColumnRemoveIsPrefix", config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix());
        objectMap.put("superEntityClass", getSuperClassName(config.getSuperEntityClass()));
        objectMap.put("superMapperClassPackage", config.getSuperMapperClass());
        objectMap.put("superMapperClass", getSuperClassName(config.getSuperMapperClass()));
        objectMap.put("superServiceClassPackage", config.getSuperServiceClass());
        objectMap.put("superServiceClass", getSuperClassName(config.getSuperServiceClass()));
        objectMap.put("superServiceImplClassPackage", config.getSuperServiceImplClass());
        objectMap.put("superServiceImplClass", getSuperClassName(config.getSuperServiceImplClass()));
        objectMap.put("superControllerClassPackage", config.getSuperControllerClass());
        objectMap.put("superControllerClass", getSuperClassName(config.getSuperControllerClass()));
        return Objects.isNull(config.getInjectionConfig()) ? objectMap : config.getInjectionConfig().prepareObjectMap(objectMap);ss

相关文章

网友评论

      本文标题:Mybatis-Plus 代码自动生成器 Generator使用

      本文链接:https://www.haomeiwen.com/subject/zkvwectx.html