# NutGender **Repository Path**: shayuxiang/nut-gender ## Basic Information - **Project Name**: NutGender - **Description**: NutGender是一个快速代码生成工具,使用简单的配置即可生成多数据库、种子数据、以及基础的增删改查和复杂查询等,可以快速构建API应用。具体使用Gitee搜索“NutGender” - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2023-04-26 - **Last Updated**: 2025-01-03 ## Categories & Tags **Categories**: code-generator **Tags**: None ## README # Nut-Gender 快速开发工具 #### 介绍 NutGender是一个快速代码生成工具,使用简单的配置即可生成多数据库、种子数据、以及基础的增删改查和复杂查询等,可以快速构建API应用。 本工具使用控制台接入,全部过程只需要对JSON配置文件进行简单配置以及几行导入代码,即可生成数据库、种子数据、相关映射类,以及MVC的相关代码。使得初始数据环境可以快速的搭建,并且更方便地在不同机器和环境中移动。 #### 安装引用 1. Nuget CLI: ```shell# dotnet add package NutGender --version 1.0.1.7 ```` 2. PackageReference ````xml ```` #### 接入步骤 1. 使用控制台程序引导 ```sharp= public static void Main(string[] args) { GenderLoadler.Instance.InitConfiguration(); //初始化配置文件 GenderLoadler.Instance.CreateTableAndSeed();//创建表及相应种子数据 GenderLoadler.Instance.CreateCSharpCodeAll(); //创建C#代码 Console.WriteLine("按任意键继续..."); Console.ReadLine(); } ``` 3. 配置文件 默认的配置文件为nutgender.json,您也可以定义多个配置文件,进行批量和条件化地导出,具体参数如下 ```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 } ] } ] } ``` ```json= 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代码的自定义替换,传入文件路径即可,具体模板写法请参考源码 ```json== "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,欢迎指正