博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis-plus 不覆盖service,controller, 生成模板使用swagger注解
阅读量:6531 次
发布时间:2019-06-24

本文共 11852 字,大约阅读时间需要 39 分钟。

情况是这样的:

原本mybatis-plus的框架的模板是不支持swagger的注解的,需要手动写。
自己折腾了1个多小时,建立在mybatis-plus的基础上进行修改。可以选择生成文件时,不覆盖某个目录下的文件,并支持生成swagger注解。这里把代码贴出来,主要是为了方便以后的兄弟们!!!

需要声明的是,本人的是maven工程,springBoot项目!

工程目录:

clipboard.png

GeneratorCode

package com.asita.renovation;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.rules.DbType;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.io.File;import java.nio.file.Paths;public class GeneratorCode {    private static String packageName = "com.asita.renovation";    private static String outDir = "F:\\java_web\\renovation\\src\\main\\java";    private static String entity = "entity";    private static String mapper = "mapper";    private static String service = "service";    private static String impl = "service.impl";    private static String controller = "controller";    private static String xml = "mapper.xml";    private static boolean isOverEntity = true;    private static boolean isOverController = false;    private static boolean isOverService = false;    private static boolean isOverServiceImpl = false;    private static boolean isOverMapper = false;    private static boolean isOverXml = false;    private static String entityVM = "/templates/entity.vm";    private static String controllerVM = "/templates/controller.vm";    private static String serviceVM = "";    private static String serviceImplVM = "";    private static String mapperVM = "";    private static String xmlVM = "";    private static String [] baseDir = {entity, mapper, service, impl, controller};    public static void main(String[] args) {        //user -> UserService, 设置成true: user -> IUserService        boolean serviceNameStartWithI = true;        generateByTables(serviceNameStartWithI, packageName,                "bedroom_ratio", "boq", "common_project",                "construction_detail", "construction_detail_item","construction_unit",                "loan_template", "main_material_list", "manager", "material_list",                "material_suppiler_template", "membership_fee",                "room_area_formula", "room_area_formula_template", "toll_switch",                "user", "work_template");    }    private static void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {        GlobalConfig config = new GlobalConfig();        String dbUrl = "jdbc:mysql://localhost:3306/renovation?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=true";        DataSourceConfig dataSourceConfig = new DataSourceConfig();        dataSourceConfig.setDbType(DbType.MYSQL)                .setUrl(dbUrl)                .setUsername("root")                .setPassword("#")                .setDriverName("com.mysql.cj.jdbc.Driver");        StrategyConfig strategyConfig = new StrategyConfig();        strategyConfig                .setCapitalMode(false)                .setEntityLombokModel(true)                .setDbColumnUnderline(true)                .setRestControllerStyle(true)                .entityTableFieldAnnotationEnable(false)                .setNaming(NamingStrategy.underline_to_camel)                //修改替换成你需要的表名,多个表名传数组                .setInclude(tableNames);        config.setActiveRecord(true)                .setAuthor("陈少平")                .setOutputDir(outDir)                .setBaseResultMap(true)                .setBaseColumnList(true)                .setFileOverride(true)                .setEnableCache(false)                // XML ResultMap                .setBaseResultMap(true)                // XML columList;                .setBaseColumnList(true);        if (!serviceNameStartWithI) {            config.setServiceName("%sService");        }        PackageConfig pcf = initPackage();        TemplateConfig tc = initTemplateConfig(packageName);        new AutoGenerator().setGlobalConfig(config)                .setDataSource(dataSourceConfig)                .setStrategy(strategyConfig)                .setPackageInfo(pcf)                .setTemplate(tc)                .execute();    }    /**     * 根据自己的需要,修改哪些包下面的 要覆盖还是不覆盖     * @param packageName     */    private static TemplateConfig initTemplateConfig(String packageName) {        TemplateConfig tc = new TemplateConfig();        for(String tmp : baseDir) {            initVM(tc);            File file = new File(Paths.get(outDir, String.join("/", packageName.split("\\.")), tmp).toString());            String[] list = file.list();            if(list != null && list.length > 0) {                if(!isOverController) {                    tc.setController(null);                }                if(!isOverService) {                    tc.setService(null);                }                if(!isOverServiceImpl) {                    tc.setServiceImpl(null);                }                if(!isOverEntity) {                    tc.setEntity(null);                }                if(!isOverMapper) {                    tc.setEntity(null);                }                if(!isOverXml) {                    tc.setXml(null);                }            }        }        return tc;    }    private static void initVM(TemplateConfig tc) {        if(stringIsNotNull(entityVM)) {            tc.setEntity(entityVM);        }        if(stringIsNotNull(mapperVM)) {            tc.setMapper(mapperVM);        }        if(stringIsNotNull(serviceImplVM)) {            tc.setServiceImpl(serviceImplVM);        }        if(stringIsNotNull(serviceVM)) {            tc.setService(serviceVM);        }        if(stringIsNotNull(xmlVM)) {            tc.setXml(xmlVM);        }        if(stringIsNotNull(controllerVM)) {            tc.setController(controllerVM);        }    }    /**     * 简单判断字符串是不是为空     * @param s     * @return     */    private static boolean stringIsNotNull(String s) {        if(null != s && !s.equals("") && s.length() > 0 && s.trim().length() > 0) {            return true;        }        return false;   **加粗文字** }    /**     * 初始化包目录配置     * @return     */    private static PackageConfig initPackage() {        PackageConfig packageConfig = new PackageConfig();        packageConfig.setParent(packageName);        packageConfig.setService(service);        packageConfig.setServiceImpl(impl);        packageConfig.setController(controller);        packageConfig.setEntity(entity);        packageConfig.setXml(xml);        return packageConfig;    }}

/templates/controller.vm

package ${package.Controller};import org.springframework.web.bind.annotation.RequestMapping;import io.swagger.annotations.Api;#if(${restControllerStyle})import org.springframework.web.bind.annotation.RestController;#elseimport org.springframework.stereotype.Controller;#end#if(${superControllerClassPackage})import ${superControllerClassPackage};#end/*** @author ${author}* @since ${date}*/@Api(tags = {"$!{table.comment}"})#if(${restControllerStyle})@RestController#else@Controller#end@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")#if(${kotlin})class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end#else#if(${superControllerClass})public class ${table.controllerName} extends ${superControllerClass} {#elsepublic class ${table.controllerName} {#end}#end

/templates/entity.vm

package ${package.Entity};#foreach($pkg in ${table.importPackages})import ${pkg};#end#if(${entityLombokModel})import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import lombok.EqualsAndHashCode;import lombok.experimental.Accessors;#end/*** @author ${author}* @since ${date}*/@ApiModel(value ="$!{table.comment}")#if(${entityLombokModel})@Data#if(${superEntityClass})@EqualsAndHashCode(callSuper = true)#else@EqualsAndHashCode(callSuper = false)#end@Accessors(chain = true)#end#if(${table.convert})@TableName("${table.name}")#end#if(${superEntityClass})public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {#elseif(${activeRecord})public class ${entity} extends Model<${entity}> {#elsepublic class ${entity} implements Serializable {#endprivate static final long serialVersionUID = 1L;## ----------  BEGIN 字段循环遍历  ----------#foreach($field in ${table.fields})#if(${field.keyFlag})#set($keyPropertyName=${field.propertyName})#end    #if("$!field.comment" != "")    @ApiModelProperty(value = "${field.comment}")    #end#if(${field.keyFlag})## 主键#if(${field.keyIdentityFlag})    @TableId(value = "${field.name}", type = IdType.AUTO)#elseif(!$null.isNull(${idType}) && "$!idType" != "")    @TableId(value = "${field.name}", type = IdType.${idType})#elseif(${field.convert})    @TableId("${field.name}")#end    ## 普通字段#elseif(${field.fill})## -----   存在字段填充设置   -----#if(${field.convert})    @TableField(value = "${field.name}", fill = FieldFill.${field.fill})#else    @TableField(fill = FieldFill.${field.fill})#end#elseif(${field.convert})    @TableField("${field.name}")#end## 乐观锁注解#if(${versionFieldName}==${field.name})    @Version#end## 逻辑删除注解#if(${logicDeleteFieldName}==${field.name})    @TableLogic#end    private ${field.propertyType} ${field.propertyName};#end## ----------  END 字段循环遍历  ----------#if(!${entityLombokModel})    #foreach($field in ${table.fields})        #if(${field.propertyType.equals("boolean")})            #set($getprefix="is")        #else            #set($getprefix="get")        #end    public ${field.propertyType} ${getprefix}${field.capitalName}() {    return ${field.propertyName};    }        #if(${entityBuilderModel})        public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {        #else        public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {        #end    this.${field.propertyName} = ${field.propertyName};        #if(${entityBuilderModel})        return this;        #end    }    #end#end#if(${entityColumnConstant})    #foreach($field in ${table.fields})    public static final String ${field.name.toUpperCase()} = "${field.name}";    #end#end    #if(${activeRecord})    @Override    protected Serializable pkVal() {        #if(${keyPropertyName})        return this.${keyPropertyName};        #else        return null;        #end    }    #end    #if(!${entityLombokModel})    @Override    public String toString() {    return "${entity}{" +        #foreach($field in ${table.fields})            #if($!{velocityCount}==1)            "${field.propertyName}=" + ${field.propertyName} +            #else            ", ${field.propertyName}=" + ${field.propertyName} +            #end        #end    "}";    }    #end}

附上maven的配置,以及springBoot 的配置

com.baomidou
mybatisplus-spring-boot-starter
1.0.5
com.baomidou
mybatis-plus
2.3
org.apache.velocity
velocity-engine-core
2.0
io.springfox
springfox-swagger2
2.8.0
io.springfox
springfox-swagger-ui
2.8.0
mybatis-plus:  mapper-locations: classpath:/com/asita/renovation/mapper/xml/*Mapper.xml  typeAliasesPackage: com.asita.renovation.entity  global-config:    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";    id-type: 0    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"    field-strategy: 2    #刷新mapper 调试神器    refresh-mapper: true    #驼峰下划线转换#    db-column-underline: true    # Sequence序列接口实现类配置    key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator  configuration:    map-underscore-to-camel-case: true    cache-enabled: false

转载地址:http://dgqbo.baihongyu.com/

你可能感兴趣的文章
几句话就能让你明白:网络地址转换(NAT)
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
特此说明
查看>>
使用flume替代原有的scribe服务
查看>>
用脚本来定制ESXI安装镜像
查看>>
微软企业级加解密解决方案MBAM架构
查看>>
没有苦劳,只有功劳!
查看>>
基于ThinkPHP写的一个简单的CMS系统
查看>>
笔记——搭建简易NFS服务
查看>>
Exchange 2010 DAG local and Site DR/Failover and Fail back
查看>>
LigerUI - 树表格的数据来自Server
查看>>
认证技术概述
查看>>
制作Windows Server 2003/08 image详细步骤与OpenStack介绍
查看>>
2016国赛小结
查看>>
Android Studio 第六十四期 - Android业务组件化之URL Scheme使用
查看>>
Hyper-V 2016 系列教程41 Windows 10 Hyper-V 系统要求
查看>>
EC2 WordPress 移动目录
查看>>
Windows Server 2008 启用公共文件夹共享
查看>>
【运维故事】职场如何领先一步?
查看>>
如何提高SEO优化团队效率
查看>>