使用这些.NET代码生成器,开发效率飙升

Posted .NET100

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用这些.NET代码生成器,开发效率飙升相关的知识,希望对你有一定的参考价值。

在.NET开发过程中,可以使用一些辅助的代码生成器来提高开发效率,之前在.NET FW时代有国产的“动软代码生成器”,现在早已不维护了。下面介绍几种.NET码生成器,供大家参考使用。最后一个代码生产器绝对优秀,推荐使用。

T4 Text Template Generator:

简介:T4是.NET框架提供的一种代码生成引擎。它使用类似于ASP.NET Web套件的语法来生成各种代码。T4提供了强大的元数据信息和代码逻辑控制语句,可以帮助您更灵活和高效地生成代码。推荐使用。

是否收费:该工具免费

是否支持.NET Core:支持。

地址:

marketplace.visualstudio.com/items?itemName=OlegSych.T4Editor。

Razor Generator

简介: Razor Generator是一种.MVC项目的代码生成器。它使用Razor语法来生成各种代码,包括控制器、视图和部分视图。Razor Generator为开发人员提供了更快的开发速度和更高效的工作流程。

是否收费:该工具免费

是否支持.NET Core:支持。

地址:

nuget.org/packages/RazorGenerator.MsBuild/。

Entity Framework Power Tools

简介: Entity Framework Power Tools是一种用于生成代码的Visual Studio扩展程序。它可以根据您的模型类生成数据库上下文、实体类、存储过程和查询类等代码。Entity Framework Power Tools可以帮助您节省大量时间和工作量,同时提高代码质量和一致性。在EF项目推荐使用。

是否收费:该工具免费

是否支持.NET Core:支持。

地址:

marketplace.visualstudio.com/items?itemName=ErikEJ.EntityFramework6PowerToolsCommunityEdition

MyGeneration

简介:MyGeneration是一个开源的代码生成器,可以生成多种类型的代码,包括类和存储过程等。它提供多个内置代码模板,支持多种数据源,可以自定义代码生成器。

是否收费:免费。

是否支持.NET Core:支持。

地址:sourceforge.net/projects/mygeneration

XSharp

简介:XSharp是一个基于.NET平台的编程语言,支持多种数据源,包括SQL Server,Oracle,MySQL等。用户可以自定义模板来生成代码。

是否收费:商业软件,有试用版。

是否支持.NET Core:支持。

地址:xsharp.info

Devart Entity Developer

简介:Devart Entity Developer是一个ORM(对象关系映射)设计工具,可以快速生成代码。用户可以使用Visual Studio中的Entity Framework Designer来创建数据结构,使用Entity Developer来生成代码。

是否收费:商业软件,提供试用版。

是否支持.NET Core:支持。

地址:devart.com/entitydeveloper

CodeRocket

简介:CodeRocket是一个Visual Studio插件,可以自动生成代码和文档。支持多种编程语言和框架,包括C#和Java等。支持使用模板自定义代码和文档。

是否收费:商业软件,有免费试用版。

是否支持.NET Core:不支持。

地址:softwareredefined.com/coderocket

Smart Code Generator

简介:Smart Code Generator是一个Visual Studio插件,可以让用户设计自己的代码生成器,并生成代码。支持多个数据源,用户可以使用模板自定义代码。提供多个实用的代码模板。

是否收费:商业软件,有试用版。

是否支持.NET Core:支持。

地址:smartcodegenerator.com

CodeSmith Generator

简介:CodeSmith Generator是一个定制代码生成器,提供多个内置代码模板以及可以自定义的代码生成器。支持多个数据源,包括SQL Server,Oracle等。用户可以自己定义模板进行代码的生成。

是否收费:商业软件,有30天的免费试用期。

是否支持.NET Core:支持。

地址:codesmithtools.com/download

Iron Speed Designer

简介:Iron Speed Designer可以将数据库表转换为功能完善的Web应用程序。该工具提供了多个内置的模板以及用户可以自定义的模板。该工具的界面友好,易于使用。

是否收费:商业软件,需要购买许可证。

是否支持.NET Core:不支持。

地址:ironspeed.com

ChatGPT

简介:ChatGPT是OpenAI基于GPT(Generative Pretrained Transformer)模型架构,通过大规模的无监督学习训练而来的自然语言处理模型。它具备自然语言理解、自然语言生成、对话管理等功能,可以模拟自然语言的沟通交流,可应用于机器人客服、智能问答、智能助手、智能翻译等领域。它也支持生成代码,你只需要把你生成代码的需求告诉它,片刻之间就会给你生产示例代码。支持多种语言。

是否收费:API接口收费,网页端免费。

地址:chat.openai.com

Copilot

简介:GitHub Copilot是由GitHub和OpenAI合作开发的代码助手工具,它基于深度学习和自然语言处理技术,可以为程序员提供代码补全、代码提示和代码自动生成等功能。Copilot的模型是通过对数百万行开源代码进行训练得到的,它可以自动理解上下文和语境,生成高质量的代码片段,大大提高了编程的效率。支持多种语言。在经济允许条件下推荐使用。

是否收费:商业收费,可以免费试用。

地址:Copilot.GitHub.com

结语

以上代码生成器适用于不同的情况和需求。开发人员应该根据项目规模和复杂度、技能水平和预算等因素选择合适的代码生成器。并根据各个代码生成器的使用说明选择合适自己项目的生成器。希望本文对你有所收获,对于代码生成器你觉得对提升代码效率有没有帮助,欢迎留言讨论。

来源公众号:DotNet开发跳槽

推荐使用mybatis-plus逆向生成crud代码,让你开发效率提升50%

文章目录


MP官网:https://baomidou.com/


1.在自己的某个服务的test目录下创建CodeGenerator类

需要判断自己在那个服务下,CodeGenerator类中需要使用该路径。

2.导入MP-Generator、模板依赖

3.CodeGenerator代码

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
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.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang.StringUtils;

import java.util.*;

/**
 * Created by zsh on 2022/4/23
 * 逆向工程
 * @author zsh
 */
public class CodeGenerator 
    /**
     * 读取控制台内容
     */
    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.isNotBlank(ipt)) 
                return ipt;
            
        
        throw new MybatisPlusException("请输入正确的" + tip + "!");
    
    public static void main(String[] args) 
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/mi-resource/src/main/java");
        //作者
        gc.setAuthor("zsh");
        //打开输出目录
        gc.setOpen(false);
        //xml开启 BaseResultMap
        gc.setBaseResultMap(true);
        //xml 开启BaseColumnList
        gc.setBaseColumnList(true);
        //日期格式,采用Date
        gc.setDateType(DateType.ONLY_DATE);
        mpg.setGlobalConfig(gc);
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://xxxxxxx:3306/you_mi?serverTimezone=UTC&allowPublicKeyRetrieval=true");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("xxxxxx");
        mpg.setDataSource(dsc);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.zsh.resource")
                .setEntity("model")
                .setMapper("mapper")
                .setService("service")
                .setServiceImpl("service.impl")
                .setController("controller");
        mpg.setPackageInfo(pc);
        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() 
            @Override
            public void initMap() 
                // to do nothing
                Map<String,Object> map = new HashMap<>();
                map.put("v","1.0");
                this.setMap(map);
            
        ;
        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
         //String templatePath = "/templates/mapper.xml.vm";
        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        focList.add(new FileOutConfig(templatePath) 
            @Override
            public String outputFile(TableInfo tableInfo) 
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath + "/mi-resource/src/main/resources/mapping/" +
                        tableInfo.getEntityName() + "Mapper"
                        + StringPool.DOT_XML;
            
        );
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        // 配置模板
        TemplateConfig templateConfig = new TemplateConfig()
                .setEntity("templates/entity.java")
                .setMapper("templates/mapper.java")
                .setService("templates/service.java")
                .setServiceImpl("templates/serviceImpl.java")
                .setController("templates/controller.java");
        templateConfig.setXml(null);
        mpg.setTemplate(templateConfig);
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        //数据库表映射到实体的命名策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        //数据库表字段映射到实体的命名策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //lombok模型
        strategy.setEntityLombokModel(true);
        //生成 @RestController 控制器
        // strategy.setRestControllerStyle(true);
        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
        strategy.setControllerMappingHyphenStyle(true);
        //表前缀
        strategy.setTablePrefix("res_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    


4.注意点

(1)如下表示enitty、controller、service、mapper的生成路径;projectPath表示项目名;这里的mi-resource表示父工程下的某个子模块,如果你的项目只有一个模块,去掉即可。

gc.setOutputDir(projectPath + "/mi-resource/src/main/java");

(2)如下是xml文件的生成目录,projectPath表示项目名;这里的mi-resource表示父工程下的某个子模块,如果你的项目只有一个模块,去掉即可。

        focList.add(new FileOutConfig(templatePath) 
            @Override
            public String outputFile(TableInfo tableInfo) 
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath + "/mi-resource/src/main/resources/mapping/" +
                        tableInfo.getEntityName() + "Mapper"
                        + StringPool.DOT_XML;
            
        );

5.启动




成 功 ! 成功!

以上是关于使用这些.NET代码生成器,开发效率飙升的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA中提高代码开发效率的10个快捷操作

RDIFramework.NET平台代码生成器V3.0版本全新发布-更新于20160518(提供下载)

十大 Node.js 端到端测试框架,快速提升工作效率

让iOS开发变得更有效率-分类工具类

一些减少代码量提高开发效率的利器(Java)

推荐使用mybatis-plus逆向生成crud代码,让你开发效率提升50%