当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
2 Star 5 Fork 1

shayuxiang / NutGender
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 19.42 KB
一键复制 编辑 原始数据 按行查看 历史
shayuxiang 提交于 2023-07-12 10:25 . 1.1.0.3

Nut-Gender 快速开发工具

介绍

NutGender是一个快速代码生成工具,使用简单的配置即可生成多数据库、种子数据、以及基础的增删改查和复杂查询等,可以快速构建API应用。

本工具使用控制台接入,全部过程只需要对JSON配置文件进行简单配置以及几行导入代码,即可生成数据库、种子数据、相关映射类,以及MVC的相关代码。使得初始数据环境可以快速的搭建,并且更方便地在不同机器和环境中移动。

安装引用

  1. Nuget CLI:
dotnet add package NutGender --version 1.0.1.7
  1. PackageReference
<PackageReference Include="NutGender" Version="1.0.1.7" />

接入步骤

  1. 使用控制台程序引导
        public static void Main(string[] args)
        {
            GenderLoadler.Instance.InitConfiguration(); //初始化配置文件
            GenderLoadler.Instance.CreateTableAndSeed();//创建表及相应种子数据
            GenderLoadler.Instance.CreateCSharpCodeAll(); //创建C#代码
            Console.WriteLine("按任意键继续...");
            Console.ReadLine();
        }
  1. 配置文件 默认的配置文件为nutgender.json,您也可以定义多个配置文件,进行批量和条件化地导出,具体参数如下
{
  //数据库类型
  "SQLType": "mysql",
  //连接字符串(不带数据库名)
  "ConnectionString": "[你的数据库连接]",
  //数据库名
  "Schema": "[数据库名]",
  //生成代码配置
  "Code": {
    //代码命名空间
    "Namespace": "Site",
    //模型映射路径
    "ModelPath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.Core\\Models",
    //DAL层代码导出路径
    "StoragePath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.Storages\\Mappers",
    //服务层代码导出路径
    "ServicePath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.Services",
    //MVC层代码导出路径
    "ControllerPath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.API\\Controllers",
    //自定义查询生成类(VO)路径
    "ViewPath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.Core\\Views",
    //公共类生成路径
    "CommonPath": "D:\\我的其它项目\\官网\\api\\OfficialWebstite\\Site.Core\\Common"
  },
  "Temlates": {
    "StorageTemp": "", //数据访问模板
    "ServiceTemp": "", //服务接口模板
    "ServiceImplTemp": "", //服务引用模板
    "ControllerTemp": "D:\\Controller2.txt" //接口模板
  },
  //所有表
  "Tables": [
    //用户表
    "./TUser.json",
    //部门表
    {
      //表中文名
      "CnName": "部门表",
      //表英文名
      "EnName": "TDept",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "部门名",
          "EnName": "Name",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ],
      //自定义查询接口
      "CustomQuery": [
        {
          "EnName": "SelectDict",
          "CnName": "查询字典",
          "Sql": "SELECT Name as Value,Id as Label From TDept;"
        }
      ],
      //种子数据
      "Seeds": {
        "Keys": "Name,CreateDate",
        "Vals": [
          "'信息部',now()",
          "'业务部',now()"
        ]
      }
    },
    //公司表
    {
      //表中文名
      "CnName": "公司表",
      //表英文名
      "EnName": "TCompany",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "公司名称",
          "EnName": "Name",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "公司简称",
          "EnName": "ShotName",
          "isPrimary": false
        },
        {
          "CnName": "公司简介",
          "EnName": "Detail",
          "DbType": "VARCHAR(8000)",
          "isPrimary": false
        },
        {
          "CnName": "联系方式",
          "EnName": "Contract",
          "DbType": "VARCHAR(16)",
          "isPrimary": false
        },
        {
          "CnName": "公司邮箱",
          "EnName": "Mail",
          "DbType": "VARCHAR(20)",
          "isPrimary": false
        },
        {
          "CnName": "位置图片",
          "EnName": "LocationImg",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "Logo图",
          "EnName": "Logo",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ],
      //自定义查询接口
      "CustomQuery": [
        {
          "EnName": "SelectDict",
          "CnName": "查询字典",
          "Sql": "SELECT Name as Value,Id as Label From TDept;"
        },
        {
          "EnName": "QueryOneById",
          "CnName": "查询单个",
          "Sql": "SELECT * From TCompany Where Id = @Id;"
        }
      ],
      //种子数据
      "Seeds": {
        "Keys": "Name,CreateDate",
        "Vals": [
          "'信息部',now()",
          "'业务部',now()"
        ]
      }
    },
    //菜单表
    {
      //表中文名
      "CnName": "菜单表",
      //表英文名
      "EnName": "TMenu",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "菜单名",
          "EnName": "Name",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "路径",
          "EnName": "Path",
          "DbType": "VARCHAR(50)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "MetaTitle",
          "EnName": "MetaTitle",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "图标",
          "EnName": "MetaIcon",
          "DbType": "VARCHAR(50)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "Vue对应组件",
          "EnName": "Component",
          "DbType": "VARCHAR(100)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "上级菜单Id",
          "EnName": "ParentId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ],
      //种子数据
      "Seeds": {
        "Keys": "Name,Path,MetaTitle,MetaIcon,Component,ParentId,CreateDate",
        "Vals": [
          "'dashboard','dashboard','欢迎','el-icon-Orange','dashboard',0,now()",
          "'m2','/companies','公司设置','el-icon-Avatar','companies',0,now()",
          "'m3','/products','产品管理','el-icon-Van','products',0,now()",
          "'m4','/friendLink','友情链接','el-icon-Clock','friendLink',0,now()",
          "'m5','/successed','案例设置','el-icon-TrendCharts','successed',0,now()",
          "'m6','/qualif','资质设置','el-icon-ShoppingCartFull','qualif',0,now()",
          "'m7','/recruit','招聘管理','el-icon-Setting','recruit',0,now()",
          "'m8','/systems','系统设置','el-icon-Ship','systems',0,now()",
          "'productstype','/products/types','产品类别','el-icon-Ship','products/types',0,now()",
          "'productslist','/products/list','产品列表','el-icon-Bicycle','products/list',0,now()"
        ]
      }
    },
    //友情连接表
    {
      //表中文名
      "CnName": "友情连接表",
      //表英文名
      "EnName": "TFriendLink",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "连接名",
          "EnName": "Name",
          "DbType": "VARCHAR(10)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "连接地址",
          "EnName": "LinkUrl",
          "DbType": "VARCHAR(500)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "类型",
          "EnName": "Type",
          "DbType": "int",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ],
      //自定义查询接口
      "CustomQuery": [
        {
          "EnName": "SelectDict",
          "CnName": "查询字典",
          "Sql": "SELECT Name as Value,Id as Label From TDept;"
        }
      ]
    },
    //日志表
    {
      //表中文名
      "CnName": "友情连接表",
      //表英文名
      "EnName": "TFriendLink",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "消息",
          "EnName": "Message",
          "DbType": "VARCHAR(300)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "源",
          "EnName": "Source",
          "DbType": "VARCHAR(300)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "级别",
          "EnName": "Level",
          "DbType": "VARCHAR(30)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //产品类别表
    {
      //表中文名
      "CnName": "产品类别表",
      //表英文名
      "EnName": "TProductType",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "产品类别名",
          "EnName": "Name",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "产品类别描述",
          "EnName": "Detail",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //产品表
    {
      //表中文名
      "CnName": "产品表",
      //表英文名
      "EnName": "TProductType",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "产品类别Id",
          "EnName": "TypeId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "产品名",
          "EnName": "Name",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "产品描述",
          "EnName": "Detail",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "图片1",
          "EnName": "ImgUrl1",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "图片2",
          "EnName": "ImgUrl2",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //新闻表
    {
      //表中文名
      "CnName": "新闻表",
      //表英文名
      "EnName": "TNews",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "新闻标题",
          "EnName": "Title",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "新闻内容",
          "EnName": "Content",
          "DbType": "VARCHAR(500)",
          "isPrimary": false
        },
        {
          "CnName": "图片",
          "EnName": "ImgUrl",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //资质表
    {
      //表中文名
      "CnName": "资质表",
      //表英文名
      "EnName": "TQualif",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "资质名称",
          "EnName": "Name",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "资质详情",
          "EnName": "Detail",
          "DbType": "VARCHAR(500)",
          "isPrimary": false
        },
        {
          "CnName": "图片",
          "EnName": "ImgUrl",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //招聘表
    {
      //表中文名
      "CnName": "招聘表",
      //表英文名
      "EnName": "TRecruit",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "招聘标题",
          "EnName": "Title",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "招聘详细",
          "EnName": "Content",
          "DbType": "VARCHAR(500)",
          "isPrimary": false
        },
        {
          "CnName": "图片",
          "EnName": "ImgUrl",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    },
    //案例表
    {
      //表中文名
      "CnName": "招聘表",
      //表英文名
      "EnName": "TSuccessd",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "所属公司Id",
          "EnName": "CompanyId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "案例标题",
          "EnName": "Name",
          "DbType": "VARCHAR(20)",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "案例详情",
          "EnName": "Detail",
          "DbType": "VARCHAR(500)",
          "isPrimary": false
        },
        {
          "CnName": "图片1",
          "EnName": "ImgUrl1",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "图片2",
          "EnName": "ImgUrl2",
          "DbType": "VARCHAR(200)",
          "isPrimary": false
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ]
    }
  ]
}
TUser.json:
   //用户表
    {
      //表中文名
      "CnName": "用户表",
      //表英文名
      "EnName": "TUser",
      //字段
      "Fields": [
        {
          "CnName": "主键",
          "EnName": "Id",
          "DbType": "bigint",
          "isPrimary": true
        },
        {
          "CnName": "部门Id",
          "EnName": "DeptId",
          "DbType": "bigint",
          "isPrimary": false
        },
        {
          "CnName": "用户名",
          "EnName": "Username",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "昵称",
          "EnName": "Nickname",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "密码",
          "EnName": "Password",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "邮件",
          "EnName": "Email",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "电话",
          "EnName": "Phone",
          "isPrimary": false,
          "isNotNull": true
        },
        {
          "CnName": "创建时间",
          "EnName": "CreateDate",
          "DbType": "DateTime",
          "isPrimary": false
        }
      ],
      //种子数据
      "Seeds": {
        "Keys": "Username,DeptId,Nickname,Password,Email,Phone,CreateDate",
        "Vals": [
          "'admin',1,'超级管理员','21232f297a57a5a743894a0e4a801fc3','13245809531',now()"
        ]
      }
    },

自定义代码模板

支持DAL、BAL、API代码的自定义替换,传入文件路径即可,具体模板写法请参考源码

  "Temlates": {
    "StorageTemp": "", //数据访问模板
    "ServiceTemp": "", //服务接口模板
    "ServiceImplTemp": "", //服务引用模板
    "ControllerTemp": "D:\\Controller2.txt" //接口模板
  }

文件替换原则

Controller.cs:存在则不作替换 Services.cs:始终替换 ServicesImpl.cs:始终替换 Mapper.cs:始终替换 公共文件:始终替换

当前版本(1.0.1.7)支持

  1. 1.0.1.4 开始加入自定义代码模板功能
  2. 1.0.1.5 开始可以自定义修改代码模板
  3. 1.0.1.6 开始允许Table节点使用路径,将表定义设置于外部其它JSON文件。降低配置文件臃肿。
  4. 1.0.1.7 加入对SqlServer数据库的支持
  5. 1.1.0.3 加入部分代码屏蔽属性CodeDisable,设置为true屏蔽部分表的代码生成
  6. 当前版本可能有不同程度的BUG,欢迎指正
C#
1
https://gitee.com/shayuxiang/nut-gender.git
git@gitee.com:shayuxiang/nut-gender.git
shayuxiang
nut-gender
NutGender
master

搜索帮助