精华内容
下载资源
问答
  • MyBatis-Plus代码生成器,如何自定义代码生成路径
    千次阅读
    2020-04-12 23:06:32
    1. 导入代码生成依赖

    主要依赖于mybatis-plus-generator和模板引擎,这里使用的是freemarker,也可以使用其他模板引擎。

    		<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>
    
    
    
            <!-- 添加mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <!-- 添加mybatis-plus组件 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.3.1.tmp</version>
            </dependency>
    
            <!-- 添加Mybatis-plus自动代码生成器组件,需要排除mybatis-plus组件依赖,否则会覆盖掉mybatis-plus-boot-starter中依赖的版本 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.2.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.baomidou</groupId>
                        <artifactId>mybatis-plus-extension</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!-- 引入freemarker模板引擎,做代码模板 -->
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
            </dependency>
    
    2. 创建代码生成器

    以下创建了一个CodeGenerator用于生成controller、service、serviceImpl、entity、mapper、mapper.xml等模板代码,可直接拷贝使用。参考MyBatis-Plus代码生成器。这里我扩展了一个customPackagePath方法,通过内部提供的packageInfo和pathInfo可自定义灵活配置包路径文件路径,详情参见代码注释。

    package com.study.mybatisplus.generator;
    
    import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
    import com.baomidou.mybatisplus.core.toolkit.StringPool;
    import com.baomidou.mybatisplus.core.toolkit.StringUtils;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.config.*;
    import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
    import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    
    import java.io.File;
    import java.lang.reflect.Field;
    import java.util.*;
    
    /**
     * @Auther: LiaoPeng
     * @Date: 2020/4/12
     */
    public class CodeGenerator {
    
        /**
         * <p>
         * 读取控制台内容
         * </p>
         */
        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 + "!");
        }
    
        public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
            // 代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
    
            gc.setFileOverride(true);
            gc.setOpen(true);
            gc.setBaseResultMap(true);
            gc.setBaseColumnList(true);
    
            gc.setAuthor("liaopeng");
            gc.setOpen(false);
    //      gc.setSwagger2(true); //实体属性 Swagger2 注解
            mpg.setGlobalConfig(gc);
    
            // 数据源配置
            DataSourceConfig dsc =
            new DataSourceConfig().setDbQuery(new MySqlQuery() {
    
                /**
                 * 重写父类预留查询自定义字段<br>
                 * 这里查询的 SQL 对应父类 tableFieldsSql 的查询字段,默认不能满足你的需求请重写它<br>
                 * 模板中调用:  table.fields 获取所有字段信息,
                 * 然后循环字段获取 field.customMap 从 MAP 中获取注入字段如下  NULL 或者 PRIVILEGES
                 */
                @Override
                public String[] fieldCustom() {
                    return new String[]{"NULL", "PRIVILEGES"};
                }
            });
            dsc.setUrl("jdbc:mysql://localhost:3306/movie?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
    //      dsc.setSchemaName("public");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("123456");
            mpg.setDataSource(dsc);
    
            // 包配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName(scanner("模块名"));
    //        pc.setParent("com.study.mybatisplus");
            mpg.setPackageInfo(pc);
    
            // 自定义配置
    //        InjectionConfig cfg = new InjectionConfig() {
    //            @Override
    //            public void initMap() {
    //                // to do nothing
    //            }
    //        };
    //
    //        // 如果模板引擎是 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 + "/src/main/resources/mapper/" + pc.getModuleName()
    //                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
    //            }
    //        });
             /*
            cfg.setFileCreate(new IFileCreate() {
                @Override
                public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
                    // 判断自定义文件夹是否需要创建
                    checkDir("调用默认方法创建的目录,自定义目录用");
                    if (fileType == FileType.MAPPER) {
                        // 已经生成 mapper 文件判断存在,不想重新生成返回 false
                        return !new File(filePath).exists();
                    }
                    // 允许生成模板文件
                    return true;
                }
            });
            */
    //        cfg.setFileOutConfigList(focList);
    //        mpg.setCfg(cfg);
    
            // 配置模板
    //        TemplateConfig templateConfig = new TemplateConfig();
    //
    //        // 配置自定义输出模板
    //        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
    //        templateConfig.setEntity("templates/entity.java");
    //        templateConfig.setService("templates/service.java");
    //        templateConfig.setServiceImpl("templates/serviceImpl.java");
    //        templateConfig.setController("templates/controller.java");
    //        templateConfig.setMapper("templates/mapper.java");
    //        templateConfig.setXml("templates/mapper.xml");
    //
    //        mpg.setTemplate(templateConfig);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    //        strategy.setSuperEntityClass("com.mybatisplus.movie.common.BaseEntity");
            strategy.setEntityLombokModel(true);
            strategy.setRestControllerStyle(true);
            // 公共父类
    //        strategy.setSuperControllerClass("com.mybatisplus.movie.common.BaseController");
            // 写于父类中的公共字段
            strategy.setSuperEntityColumns("id");
            strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
            strategy.setControllerMappingHyphenStyle(true);
    //        strategy.setTablePrefix(pc.getModuleName() + "_");
    
            strategy.setEntityColumnConstant(true);
            strategy.setEntityBuilderModel(true);
            strategy.setEntityTableFieldAnnotationEnable(true);
    
            mpg.setStrategy(strategy);
    
            mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    
            //自定义文件生成路径,包路径
            //这里调用customPackagePath方法,使用可以自己在内部灵活配置路径
            //如果不调用该方法、就会使用MyBatis-Plus默认的文件生成路径和包路径生成文件、但可以使用上面的PackageConfig做一些简单的配置
            customPackagePath(pc,mpg);
    
            mpg.execute();
        }
    
        /**
         * 自定义包路径,文件生成路径,这边配置更灵活
         * 虽然也可以使用InjectionConfig设置FileOutConfig的方式设置路径
         * 这里直接使用Map方式注入ConfigBuilder配置对象更加直观
         * @param pc
         * @param mpg
         * @throws NoSuchFieldException
         * @throws IllegalAccessException
         */
        public static void customPackagePath(PackageConfig pc,AutoGenerator mpg) throws NoSuchFieldException, IllegalAccessException {
    
            String projectPath = System.getProperty("user.dir");
            String mavenPath = "\\src\\main\\java\\";
            String srcPath = projectPath+mavenPath;
    
            String moduleName = pc.getModuleName();
    
            /**
             * packageInfo配置controller、service、serviceImpl、entity、mapper等文件的包路径
             * 这里包路径可以根据实际情况灵活配置
             */
            Map<String,String> packageInfo = new HashMap<>();
            packageInfo.put(ConstVal.CONTROLLER, "com.study.mybatisplus.controller."+moduleName);
            packageInfo.put(ConstVal.SERVICE, "com.study.mybatisplus.services."+moduleName+".service");
            packageInfo.put(ConstVal.SERVICE_IMPL, "com.study.mybatisplus.services."+moduleName+".service.impl");
            packageInfo.put(ConstVal.ENTITY, "com.study.mybatisplus.entity."+moduleName);
            packageInfo.put(ConstVal.MAPPER, "com.study.mybatisplus.mapper."+moduleName);
    
            /**
             * pathInfo配置controller、service、serviceImpl、entity、mapper、mapper.xml等文件的生成路径
             * srcPath也可以更具实际情况灵活配置
             * 后面部分的路径是和上面packageInfo包路径对应的源码文件夹路径
             * 这里你可以选择注释其中某些路径,可忽略生成该类型的文件,例如:注释掉下面pathInfo中Controller的路径,就不会生成Controller文件
             */
            Map pathInfo = new HashMap<>();
            pathInfo.put(ConstVal.CONTROLLER_PATH, srcPath + packageInfo.get(ConstVal.CONTROLLER).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
            pathInfo.put(ConstVal.SERVICE_PATH, srcPath + packageInfo.get(ConstVal.SERVICE).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
            pathInfo.put(ConstVal.SERVICE_IMPL_PATH, srcPath + packageInfo.get(ConstVal.SERVICE_IMPL).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
            pathInfo.put(ConstVal.ENTITY_PATH, srcPath + packageInfo.get(ConstVal.ENTITY).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
            pathInfo.put(ConstVal.MAPPER_PATH, srcPath + packageInfo.get(ConstVal.MAPPER).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
            pathInfo.put(ConstVal.XML_PATH, projectPath+"\\src\\main\\resources\\mapper\\"+moduleName);
            pc.setPathInfo(pathInfo);
    
            /**
             * 创建configBuilder对象,传入必要的参数
             * 将以上的定义的包路径packageInfo配置到赋值到configBuilder对象的packageInfo属性上
             * 因为packageInfo是私有成员变量,也没有提交提供公共的方法,所以使用反射注入
             * 为啥要这么干,看源码去吧
             */
            ConfigBuilder configBuilder = new ConfigBuilder(mpg.getPackageInfo(), mpg.getDataSource(), mpg.getStrategy(), mpg.getTemplate(), mpg.getGlobalConfig());
            Field packageInfoField = configBuilder.getClass().getDeclaredField("packageInfo");
            packageInfoField.setAccessible(true);
            packageInfoField.set(configBuilder,packageInfo);
    
            /**
             * 设置配置对象
             */
            mpg.setConfig(configBuilder);
        }
    }
    
    3. 自定义代码模板

    可以在代码生成器的jar包中找到你需要的模板拷贝并进行修改,然后使用以上的TemplateConfig对象配置你修改后的模板的位置。
    在这里插入图片描述

    更多相关内容
  • 最新版java代码生成器基于springMvc+mysql 后台功能一键生成 压缩包里的jdk文件目录 请自行下载jdk1.8.0_45版本并覆盖进去 没有jdk是运行不起来的 也可以下载其他jdk版本 但是jdk1.8.0_45这个文件目录名称不要更改 ...
  • 开源C#代码生成

    热门讨论 2016-01-18 17:01:37
    开源C#代码生成器基于winform+DevExpress+RazorEngine.NET 支持SQLSERVER,ORACLE,MYSQL,自定义模板
  • 此时,我们就需要采用另外一种方式,把它们抽象出来更高层级的模板,然后把不同数据传入该模板的占位符,这样就变成不同的代码,这种方式就是代码生成技术。 在软件的设计过程中,代码生成及重用设计仿若陌路人,...
  • java代码生成器(亲测,好用)

    热门讨论 2017-03-23 13:16:47
    亲测,好用,欢迎下载+教程
  • vue代码生成

    千次阅读 2021-09-16 11:20:54
    目前的代码生成器基本上是基于数据库表格来生成对应的前后台代码,好处是前后台一次性搞定.但实际开发中,很多的业务是需要连表的,所以这种情况来说,根据接口直接生成前代码,就免除了与后台接字段的时间,也免除...

    直接根据swagger api生成vue代码

    前要

    目前的代码生成器基本上是基于数据库表格来生成对应的前后台代码,好处是前后台一次性搞定.但实际开发中,很多的业务是需要连表的,所以这种情况来说,根据接口直接生成前代码,就免除了与后台接字段的时间,也免除了很复制操作.

    由此,我生出编写根据接口生成前端代码生成器的想法.

    因为我司api文档有两种,前端又有vue2+element 和 vue3+ant+ts两种框架,由此,扩展出三种代码生成器.

    思路

    前端代码生成器,简单的说:

    • 第一步,通过接口文档获取接口的入参\出参,并将这入参\出参格式化成特定JSON
    • 第二步,根据自己的项目,结合表格、表单组件,抽离出代码模板
    • 第三步,通过第一二步的JSON、代码模板,生成vue、JS以及路由文件

    简介

    本项目采用puppeteer对接口文档网页读取,获得接口链接、入参、出参等,并记录半生成特定格式的json.

    因本项目是为了配合公司的接口文档,生成公司的后台管理网站,定制化较高,所以此项目对于其他朋友来说,可做参考.如其他交流,可以联系我.

    技术方案

    获接口文档中接口的入参\出参,我采用爬虫框架puppeteer来获取,根据获得的入参\出参,结合代码模板,生成实际放入工程的增删改查文件,做到增删改查基本不用再码代码.同时支持审核等表格操作

    通过fs.writeFile来生成文件

    说明

    目前项目中只给了根据接口生成vue2+element的代码.因为代码是根据特定组件生成的.

      

            表格、表单组件见项目中组件目录,这个需要全局引入.见components目录


     

    另有生成vue3+typescript+ant的代码,暂未公布.


     

    配置说明

    scale的配置

    ```js

    // 适用于scale的配置

    export const config = {

      href: 'http://xxx.cn/',

      serverName: 'AdminStoreContractService',

      pages: [{

        filePath: 'promotionNew',     // 列表\新\修页面所在路径

        chunkName: 'base', // chunkName 用于路由中 require.ensure 打包参数

        list: { // 列表

          fileName: 'pn-list', // 列表文件名字

          name: '列表', // 菜单名

          apiName: 'listStoreContract',  // 列表接口名

          exportFile: { // 导出 [非必填]

            apiUrl: '',

            downFileName: ''

          }

        },

        modify: { // (修改\新增)  [非必填]

          fileName: 'modify',  // 页面名

          apiName: 'saveStoreContract',  // 接口名

          detailApi: 'getStoreContractById', // 查看详情接口名 (用于查看详情、编辑)

          hasEdit: true

        },

        opts: [ // 表格行操作

          {

            apiName: 'modifyStoreContractStatus', // 接口

            confrimMsg: '确认审核该记录', // 如果没有确认信息,则直接请求

            text: '审核'

          }

        ]

      }]

    }

    ```

    swagger api 的配置

    ```js

    // 适用于swagger api 的配置

    export const swaggerConfig = {

      href: 'http://xxx.com',

      serverName: 'mini-new-promotion-service',

      baseUrl: '/promotion-new/manager/',

      pages: [{

        filePath: 'promotionNew',     // 列表\新\修页面所在路径

        chunkName: 'base', // chunkName 用于路由中 require.ensure 打包参数

        list: { // 列表

          fileName: 'pn-list', // 列表文件名字

          name: '列表', // 菜单名

          apiName: 'getPromotionList',  // 列表接口名

          exportFile: { // 导出 [非必填]

            apiUrl: '',

            downFileName: ''

          }

        },

        modify: { // (修改\新增)  [非必填]

          fileName: 'modify',  // 页面名

          apiName: 'savePromotion',  // 接口名

          detailApi: 'promotionDetail', // 查看详情接口名 (用于查看详情、编辑)

          hasEdit: true

        },

        opts: [ // 表格行操作

          {

            apiName: 'updPromotionConfigStatus', // 接口

            confrimMsg: '确认审核该记录', // 如果没有确认信息,则直接请求

            text: '审核'

          }

        ]

      }]

    }

    ```



     

    代码生成命令

     

    目前本项目支持两种api文档, 第一种支持swagger api;第二种支持scale[这种用户比较少]

    执行命令前,请在config.ts/swaggerConfig.ts中将配置修改好,如配置好需要生成的代码的网址


     

    - swagger的代码命令

    ```

    yarn run scr

    ```

    - scale的代码命令

    ```

    yarn run start

    ```

      

    上代码

    废话不多说,上代码:

        

        

        https://gitee.com/myreborns/curd

        

    生成器持续更新中,欢迎各位小伙伴交流,如果好用,给个赞.

     


     

     

    scale\swagger对比



     

    |  | scale | swagger |

    | --- | --- |--- |

    | 枚举 | 同一个服务下的枚举都会放在同一个地方,是可以直接放入项目中使用的文件 | 自己根据后台的描述慢慢拆吧 |

    | 出参\入参获取 | 需要一层一层的获取 | 在页面打开的时,就有请求获取,直接获取请求的返回值就好 |

    展开全文
  • CSharp C#代码生成

    2016-05-01 16:35:50
    c#代码生成器,生成代码可用于Web及Winform编程,可批量导出代码,导出代码直接拷贝到VS中就可以使用,支持MSSqlServer,Oracle数据库
  • C#代码生成

    热门讨论 2011-12-14 17:03:21
    .net代码生成器 C#代码生成器内置辅助类!!!一键生成含所有源码!!!
  • 【课设生成器】我做了一个代码生成

    千次阅读 多人点赞 2021-11-13 11:25:42
    文章目录一、什么是代码生成器0.视频介绍1.做生成器的初衷2.以前定做课设3.现在定做课设4.资源内容二、代码生成器的使用1.文件目录介绍2.启动系统3.使用教程3.1界面3.2 生成3.3 配置项通用配置 一、什么是代码生成器...

    一、什么是代码生成器

    我是一个已经毕业的学长,大三发现定做课程设计,可以帮自己赚取生活费,又巩固了基础知识,可以说是自身双赢了。在大四实现完全经济独立。但工作了就没什么精力做课设了,如果你对生成器感兴趣,或者想在学习的状态下赚一些零花钱,不妨通过以下视频和文章了解一下。

    原本是每个定做的项目都要通过手写来实现,后来做了这个代码生成器,90%的C/C++Javaweb/Javaswing/C# + Mysql/SqlServer课设,都可以通过简单的配置,10分钟就可以完成!而且生成的代码功能已经很全面了,包含了可以配置的增删改查、登陆注册、权限、模糊查询、排序等。
    在这里插入图片描述

    在这里插入图片描述

    0.视频介绍

    B站演示视频:https://www.bilibili.com/video/BV14q4y137Pa?spm_id_from=333.999.0.0

    我做了一个课程设计代码生成器,一键生成C、数据结构、C#、Java、数据库课设

    1.做生成器的初衷

    我们定做课设,内容包括C语言 C++面向对象 还有C#管理系统 JavaSwing JavaWeb系统,数据库课设,做多了以后,发现我们无非就是在做各种管理系统,他们都离不开增删改查,内容本质上来说都是一样的。而程序最擅长的就是重复性工作,有没有办法做个生成器来帮我们写代码呢?

    我们只要做简单的设置,就能自动生成一个功能齐全的系统!

    这样,定做课设的成本就大幅降低了,出价也可以变得更便宜!

    2.生成器的功能

    生成效果建议观看我的的视频效果更直观:https://www.bilibili.com/video/BV14q4y137Pa?spm_id_from=333.999.0.0

    进行一些简单的配置,然后,保存并点击生成按钮,就OK了 !,下图是配置C语言的例子

    例子1:学生信息管理系统,功能要求:对学生信息进行增删改查,可以按照名称、年龄、性别等条件查询,支持多级查询(比如年龄在某个区间且性别为男),根据姓名、年龄排序、信息保存到文件并可查看读取
    在这里插入图片描述
    例子2:航空公司运输记录和运费计算系统,运费自动计算,重量小于15免运费,15-25:12元每公斤,25-48:12每公斤,48-80:20每公斤,大于80:30每公斤。

    那我们可以在默认值的一栏填上三则运算表达式。

    在这里插入图片描述
    生成结果:一共5种版本,自由选择复制。
    在这里插入图片描述

    Java、C#生成
    C#和java的生成里面,支持一次配置,自由生成
    C# / Javaswing / Javaweb / javaweb2(样式2)和两种数据库自由搭配!

    生成的系统,只要导入即可,无需再修改源码和创建项目!真正的做到了一键生成所有内容
    在这里插入图片描述
    生成的内容示例(Java,Java的有idea版本和eclipse版本,C#的是用Visual Stdio运行的),只要将sql文件导入即可,mysql或者sqlserver脚本都会生成可以在系统中配置更改。还有数据库设计文档也一并生成了!

    生成的Java内容示例:
    在这里插入图片描述
    生成的文档:
    在这里插入图片描述

    4.资源内容

    到目前为止
    代码生成器已经处于比较成熟的阶段了
    要学会使用它
    你只要看懂我视频的设计就足够了

    这个系统自带很多以前定做的案例
    不知道看完视频的你有没有自己的想法呢

    资源包括:代码生成器+现有源码、毕设、论文 ,和代码生成器中的已经配置好的案例 一共200+项目(C、C++、C#、java、数据库)

    二、代码生成器的使用

    如果你不会用 ,我会远程教你启动,10几分钟即可。

    接下来就说说这个生成器吧,它本身就是一个Java做的系统,为了方便操作,我们特地做了web界面。

    最终我把它打包成了这几个文件启动也非常的简单:
    1.双击我写的这个bat脚本
    2.在浏览器访问localhost就可以访问啦

    其中MY_AUTO_APP ,当你生成了一个Java \ C# 语言程序时,他会放在这个文件夹
    在这里插入图片描述

    1.文件目录介绍

    config:包含一些系统的配置文件,比如这个系统的启动端口,连接的数据库
    target:程序的主体(jar文件)
    bat :两个bat文件都可以用来启动这个项目用的
    其中start-service就是服务方式启动,缺点是双击后没有反应,优点是后台会一直启动。
    start-terminal(推荐)是控制台启动,双击后弹出一个控制台黑框框,关掉控制台后系统就关掉了

    2.启动系统

    双击start-terminal.bat启动系统了,启动完成后,浏览器访问localhost

    3.使用教程

    看以下内容之前,可以先观看我的------B站视频介绍------,防止一脸懵逼
    基本的使用呢,我的视频都已经介绍了
    下面介绍一些系统相关配置的注意事项
    还有系统的一些便捷功能
    避免生成的系统出现报错问题。

    3.1界面

    除了代码生成器这个模块,其他的功能没必要去管他
    (这些就是历史原因了哈哈,本来想做一个网站的上线的…)
    在这里插入图片描述

    3.2 生成

    在新增或者修改项目后,要记得保存,保存后下次可以复用

    在这里插入图片描述

    3.3 配置项

    为了更好的发掘生成器的功能,我们可以灵活的运用配置项的功能。

    C/C++属性配置示例:
    在这里插入图片描述
    C# / Javas程序配置示例:
    在这里插入图片描述

    通用配置

    • 命名 :系统、对象等命名时候,请避免使用特殊字符:# ¥ % & ^ ) - = + : " ' } ]【】~!? . , < > / 、

    • 中文名 用于对象名或属性名的描述,这样生成的系统注释才会齐全。例:管理员

    • 是否查询 增删改查的查找功能中,如果查询设为【是】,则该属性会作为查询条件,例:可以通过姓名来查找学生

    • 是否统计 系统查询功能中,对于查出的数据会进行自动统计,例:每天的营业额设为统计,将自动对查询出来的数据求和

    • 是否平均 系统查询功能中,对于查出的数据会进行自动平均,例:学生身高设为平均,将自动显示平均身高

    • 更新页显示 修改/更新的时候,这个字段显示,例:我想让学生学号不可修改,我就可以设为否,默认是否

    • 可更新 是否可以更新这个字段,如果设为否,C#和Java 将会设为不可修改
      在这里插入图片描述

    • 字段唯一 比如学号、身份证号码,他们是不会重复的字段,应该设为字段唯一。

    • 数据类型 C/C++的数据类型为char的时候,请在属性名后面加上长度,java和c#则不需要添加后缀[n],n表示字符数组长度
      在这里插入图片描述

    • 最大长度 是C#和Java才有的配置,只有数据类型是String才生效。类似于c语言属性名的后缀,表示这个字段最长长度,一般用默认的255即可

    • 不为空 必填,例如:姓名为必填项

    • 配置下拉框 当下拉框的有值的时候,输入框会变成自动下拉框。例如:性别为 男、女

    • 默认值 新增的时候,默认会给这个属性赋值,在C语言和其他语言中有所不同,要注意。
      例1:【字符串】例如我想名族默认是汉族:那么要填"汉族",要加双引号,类似于string family = “汉族”;填的是 = 后面的内容
      例2:【数字】数量默认是100:填100
      例3:【时间】窗体生成分为Java和C#窗体,在java和C#中都有时间类型,Java的默认时间是 new Date(),而C#的为 DateTime.Now.ToString() ,这时为了统一配置,我用通配符来代替他们。例如我要设默认时间为当前时间,则填{time.now}(这是我自己制定的规则),生成的时候,他们会判断这是java、C#项目来自动设置默认值。

    • 外键
      这一个内容要单独理解,配置简单,但是功能比较多,拿下图的学生成绩管理系统来说:
      前提是我们已经添加了学生:Student对象和课程:Course对象,现在添加这个成绩对象
      1、 看下图,课程和学生对应的外键已经填上了内容,这个意思指的是,学生成绩管理系统必须先添加学生和课程,才能添加成绩,没有学生和课程,哪来的成绩对吧?
      2、 自动设置权限,这个学生,如果【是登陆用户】,那么学生登陆后,是只能查看自己的成绩的,这个用处很多,很重要。例如:借阅系统中,我们希望读者只能看到自己的借阅记录。
      3、 便利的查询,在C#和Java中的查询框是可以设置为下拉框的,以下例子中,因为课程和学生都是外键而且他们是查询条件,所以生成的成绩管理系统,在查成绩的时候,可以通过下拉框来选择查询某个学生、课程的成绩。
      在这里插入图片描述
      在这里插入图片描述

    展开全文
  • 前端代码生成

    千次阅读 2021-11-20 09:27:03
    地址:CodeFun - UI 设计稿智能生成代码 效果: 2.PxCook 介绍:高效易用的自动标注工具, 生成前端代码, 设计研发协作利器 地址:PxCook - 高效易用的自动标注工具,生成前端代码,设计研发协作利器 效果...

    1.CodeFun

    介绍:前端 8 小时工作量,10 分钟完成

    地址:CodeFun - UI 设计稿智能生成源代码

     效果:

     

    2.PxCook

    介绍:高效易用的自动标注工具, 生成前端代码, 设计研发协作利器

    地址:PxCook - 高效易用的自动标注工具,生成前端代码,设计研发协作利器

    效果:

     3.MagicalCoder

    介绍:面向零基础,拖拽式编程,赋能企业,前后端代码一键生成,时间就是金钱,效率就是生命,我们承诺提效30%以上,您的竞争对手都在使用

    地址:MagicalCoder官方社区 - 最好用的代码生成器

    效果:

     随意一款,足以让前端人恐惧!

    展开全文
  • 基于JAVA开发的全能代码生成
  • 动软代码生成器最新版

    热门讨论 2014-03-14 11:56:23
    动软代码生成器是一款为程序员精心设计的代码自动生成器。该软件综合了开发中的经典思想和设计模式,支持生成不同架构的项目和代码,完全省去了大量的机械录入的时间和重复动作,让你更加有时间集中在业务逻辑的开发...
  • 代码生成器MyBatisX自动生成代码

    千次阅读 2022-04-11 16:53:50
    2.生成代码 3.重置代码 4.JAP提示 二、优点: 提高开发效率,不必再去做重复且无技术水平的基础coding,为程序员们节省大量的时间,将时间用在吃饭、睡觉、玩游戏上,它不香么? 三、如何使用: 1.安装MyBatisX: ...
  •   Simulink自动代码生成也被称作基于模型开发(BMD),相比于传统的手写代码方式能够尽量减少人为错误。模型本身可以用于仿真,单元测试等,更便于提前发现逻辑错误。同时只要约定好模型接口,就可以多人协作,每...
  • postman代码生成

    千次阅读 2022-02-07 17:53:54
    postman可以生成多语言代码,对于语言不熟悉的小伙伴来说非常实用。 步骤一,点击最右侧工具栏中.../>",打开代码生成面板 步骤二,选择想要生成的语言,例如JavaScript,python… 设置代码生成格式 ...
  • 【若依框架】代码生成详细教程

    万次阅读 多人点赞 2021-02-19 16:52:42
    若依框架1、修改代码生成配置2、新建数据库表结构(单表)3、项目中新建模块,并解决项目依赖的关系4、若依系统中新建一个目录 - 学生管理5、导入一开始建的表并设置上级目录,生成代码6、执行生成的SQL7、将生成的...
  • JEECG BOOT 代码生成器非常智能,在线业务建模、在线配置、所见即所得支持23种类控件,一键生成前后端代码,大幅度提升开发效率,不再为重复工作发愁1. 代码生成器的数据库配置代码生成器的数据库连接是独立的,与...
  • java写的代码生成工具源码

    热门讨论 2012-08-23 14:37:22
    目前该版本可以支持mysql,oracle数据库,生成代码包含bean文件Service文件还有jsp文件 template文件夹里面有四个模版文件(可以修改生成你想要的代码)。 具体配置步骤如下: 一、配置数据库基本信息,如...
  • MyBatis-Plus——代码生成器的使用

    千次阅读 2021-12-27 17:20:11
    MyBatis-Plus——代码生成器的使用 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 ...
  • 简单代码生成工具

    万次阅读 2021-07-21 15:39:46
    代码生成 我们做项目的时候,经常会碰到写一些基础的增删改查代码,所以就写了个代码生成的工具,可根据自己的需求编写相应的代码模板。 大致思路 查询表信息,通过字段类型映射出 java 类型,然后通过模板生成 ...
  • 代码生成

    千次阅读 2018-11-20 17:08:59
    最近做项目写了一个代码生成器,现在就分享出来给大家,顺便说一下代码生成器是什么东西! 1.什么是代码生成代码生成器顾名思义就是一个生成代码的软件。为了节省成本,在日常的企业开发中,代码生成器使用比较...
  • 自己写的MyBatis-Plus的新旧版代码生成工具,以及模板下载。IDEA导入即可。外加这几年写的,19篇从MySQL到MyBatis-Plus文章。
  • Mybatis代码生成

    千次阅读 2020-11-28 23:42:56
    使用Mybatis生成代码 1.导包 <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version>...
  • JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领低代码开发...
  • 免费代码生成器,直接生成后台和前端代码 现在不管是哪个公司进行互联网程序的开发,都有自己的一套代码生成器。大部分公司都是直接从网上找源码,进行适当的修改变成自己的代码生成器。 如果公司业务主要是后台管理...
  • Mybatis-plus最新代码生成器(3.5.1+)的使用

    千次阅读 多人点赞 2021-10-06 16:17:58
    } } 接下来就是写生成逻辑了,很简单,看官网:plus–代码生成器 这是最新版的,整体的结构就是这样的,下面把我的代码生成器拿出来,并介绍一下分别有什么用(其实官网都有),完整代码放在最后: 1.全局配置...
  • 表达式中间代码生成 二、实验目的 熟悉算术表达式的语法分析与中间代码生成原理。 三、实验内容 1. 构造算术表达式的四元式翻译文法 2. 设计算术表达式的递归下降子程序分析算法 3. 设计算术表达的四元式生成算法...
  • 通过Simulink仿真及生成代码,通过STM32完成DTC的系统控制
  • 完美国际 物品代码生成

    热门讨论 2012-11-24 23:46:24
    完美国际物品生成器 打开物品生成器.这个要放在服务端的\ffpwserver\pwserver\gamed\config文件夹下面.要不读取不到信息.改好属性.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,010,765
精华内容 1,604,306
关键字:

代码生成