SmallCoder代码生成器 - 支持Mysql、Oracle、SqlServer 等数据库
前言
本工具基于Liquid模板引擎开发,语法详见文档 Liquid中文手册。后续如果有不明白的地方在下方留言,我再补充文档。
模板目录:Templates,文件后缀.nxt。此目录下的第一层文件夹会被视作模板
输出目录:Out,默认生成文件后缀.cs。当模板文件为*.html.nxt这样的格式时,生成文件后缀为.html
Templates目录中出现EntityFolder文件夹时,会被自动替换成实体目录定义的文件夹(注:如果实体目录为空时,会被替换成实体名称 文件夹);文件名中出现EntityName时会被替换成实体名称;注意:模板中所有文件名称前都会自动追加实体名称字样。下载 示例模板
{{ Entity }}标签用于展示内容、{% if %}标签用于逻辑控制、{% raw %}标签输出不做解析(注)
目前已支持的数据库
- Mysql
- SqlServer
- Oracle
- DM(达梦)
- PostgreSQL
界面展示


一、功能清单
| 名称 | 作用描述 | 
|---|---|
| 数据源 | 自行点击右侧配置按钮,配置数据连接 | 
| 数据库 | 对应具体的数据库 Database | 
| 数据表 | 对应数据库中的具体的 Table | 
| 实体名称 | 对Table名称进行二次自定义,模板中实际使用值 | 
| 命名空间 | 类的命令空间,模板有文件夹层级时,会自动追加 | 
| 功能描述 | 对应功能描述,可用于对Controller的描述 | 
二、预置参数
| 名称 | 作用描述 | 
|---|---|
| _SpaceName | 命名空间 | 
| _TableName | 选择的某一个数据库表名 | 
| _TableComment | 选择的某一个数据库表的注释 | 
| _EntityName | 实体名称 | 
| _EntityFolder | 实体目录 | 
| _Columns | 表对应的所有列,见 三、_Columns属性 | 
| _Description | 功能描述 | 
| _Json | 自定义JSON参数(自动读取模板目录下的 template.json 文件) | 
三、_Columns属性
| 名称 | 描述 | 类型 | 
|---|---|---|
| name | 列名 | string | 
| comment | 备注 | string | 
| data_type | 程序内数据类型 | string | 
| data_type_code | 数据类型,示例:varchar | string | 
| column_type | 列类型,示例:varchar(512) | string | 
| char_length | 字符串长度,示例:512 | long? | 
| is_pri | 是否主键 | bool | 
| is_auto_increment | 是否自增 | bool | 
| is_nullable | 是否可空 | bool | 
| number_precision | 数值长度 | long? | 
| number_scale | 数值精度 | long? | 
四、快捷键说明
| 按键 | 扩展按键 | 作用描述 | 
|---|---|---|
| F2 | 目录:对选中的文件(夹)进行重命名 | |
| F5 | Ctrl + R | 目录:刷新左侧文件(夹)树 | 
| Del | Ctrl + D | 目录:对选中的文件(夹)进行删除 | 
| Ctrl + C | Ctrl + V | 目录:复制(粘贴)选中的文件(夹) | 
| Ctrl + E | 目录:打开文件(夹)所在目录 | |
| Ctrl + N | Ctrl + Shift + N | 目录:在选中的节点下,创建文件(夹) | 
| Ctrl + Shift + C | 目录:对选中的文件(夹)快速复制粘贴 | |
| Enter | 目录:快速打开要编辑的文件(同:双击打开文件) | |
| Ctrl + F | 编辑:在当前编辑的文件中进行高亮搜索 | |
| Ctrl + D | 编辑:删除当前光标所在行的内容 | |
| Ctrl + S | 编辑:对已修改的模板文件进行保存 | |
| Ctrl + U | Ctrl + Shift + U | 编辑:对已选中的文本,进行字母小写(或大写)转换 | 
| ESC | 编辑:关闭正在编辑的文件 | |
| Alt + ↑ | Alt + ↓ | 编辑:在文档中上(下)移动光标所在行的代码 | 
| Ctrl + Enter | Ctrl + Shift + Enter | 编辑:在文档中光标所在位置的上(下)行插入空行 | 
| Ctrl + i | 编辑:在文档中插入 {%- -%} | |
| Ctrl + [ | 编辑:在文档中插入 {{ }} | |
| Ctrl + J | 编辑:在文档中插入 {%- comment- %} {%- endcomment -%} | 
示例:连接字符串
# MySql
Server=127.0.0.1;port=3306;database=test_db;user=test_user;password=test_password;
# SqlServer
server=127.0.0.1;uid=test_user;pwd=test_password;database=test_db;
# Oracle
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=test_service_name)));User Id=test_user;Password=test_password;
# DM(达梦)
Server=127.0.0.1:5236;User=test_user;Password=test_password;
# PostgreSQL
User ID=test_user;Password=test_password;Host=127.0.0.1;Port=5432;Database=postgres;版本发行时间
Liquid 扩展语法
| 使用示例 | 作用描述 | 
|---|---|
| {%- array my_array = ['apple', 'banana', 'cherry'] -%} | 标签:定义一个数组(array) | 
| {%- ternary boolVal ? 'Entity' : 'EntityBase' -%} | 三目运算符(标签用法) | 
| {{ boolVal | ternary: "111", "222" }} | 三目运算符(过滤器用法) | 
| {%- assign result = array1 | contains: "111" -%} | 数组 array1 是否包含指定元素 | 
| {%- assign result = array1 | contains_ignore_case: "111" -%} | 数组 array1 是否包含指定元素(忽略大小写) | 
| {%- assign result = array1 | any: array2 -%} | array1 包含 array2 中任意一项 | 
| {%- assign result = array1 | all: array2 -%} | array1 中包含 array2 的所有项 | 
| {%- assign result = array1 | downcase_array -%} | 字符串数组中项全部转小写 | 
| {%- assign result = array1 | upcase_array -%} | 字符串数组中项全部转大写 | 
| {%- assign result = array1 | index_of: "111" -%} | 查找数组中匹配项的第一个索引 | 
| {%- assign result = array1 | index_of_ignore_case: "111" -%} | 查找数组中匹配项的第一个索引(忽略大小写) | 
| {%- assign result = str | upper_camelcase -%} | 字符串转为 UpperCamelCase,并移除下划线 | 
| {%- assign result = str | lower_camelcase -%} | 字符串转为 LowerCamelCase,并移除下划线 | 
| {%- assign result = str | kebabize -%} | 将字符串中的大写字母转成小写,并在前添加 '-' | 
| {{ str1 | null_default: str2 }} | 当 str1 = null 时,返回默认值 str2 | 
| {%- assign result = array1 | intersect: array2 -%} | 数组 array1 与 array2 的交集 | 
| {%- assign result = array1 | except: array2 -%} | 数组 array1 与 array2 的差集 | 
| {%- assign result = array1 | except_ignore_case: array2 -%} | 数组 array1 与 array2 的差集(忽略大小写) | 
| {%- assign result = array1 | union: array2 -%} | 数组 array1 与 array2 的并集 | 
| {%- assign result = array1 | filter: array2 -%} | 筛选 array1 中包含的 array2 的所有项 | 
| {%- assign result = array1 | filter_ignore_case: array2 -%} | 筛选 array1 中包含的 array2 的所有项(忽略大小写) | 
| {%- assign result = array1 | match: "111" -%} | 匹配 array1 中指定项,存在返回值,不存在返回 null | 
| {%- assign result = array1 | match_ignore_case: "111" -%} | 匹配 array1 中指定项(忽略大小写) | 
| {%- assign result = str | starts_with: "apple" -%} | str 是否以特定字符串开头,支持:ignore_case | 
| {%- assign result = str | ends_with: "apple" -%} | str 是否以特定字符串结尾,支持:ignore_case | 
| {%- assign result = str | remove_stars_with: "apple" -%} | 移除 str 中特定字符串开头的内容,支持:ignore_case | 
| {%- assign result = str | remove_ends_with: "apple" -%} | 移除 str 中特定字符串结尾的内容,支持:ignore_case | 
| {%- include /template.json -%} | 导入文件,支持 【/】根目录、【./】当前目录、【../】上级目录(支持多级) | 
THE END
                            二维码
                                打赏
 
文章目录
关闭


共有 0 条评论