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数据类型,示例:varcharstring
column_type列类型,示例:varchar(512)string
char_length字符串长度,示例:512long?
is_pri是否主键bool
is_auto_increment是否自增bool
is_nullable是否可空bool
number_precision数值长度long?
number_scale数值精度long?

四、快捷键说明

 

按键扩展按键作用描述
F2目录:对选中的文件(夹)进行重命名
F5Ctrl + R目录:刷新左侧文件(夹)树
DelCtrl + D目录:对选中的文件(夹)进行删除
Ctrl + CCtrl + V目录:复制(粘贴)选中的文件(夹)
Ctrl + E目录:打开文件(夹)所在目录
Ctrl + NCtrl + Shift + N目录:在选中的节点下,创建文件(夹)
Ctrl + Shift + C目录:对选中的文件(夹)快速复制粘贴
Enter目录:快速打开要编辑的文件(同:双击打开文件)
Ctrl + F编辑:在当前编辑的文件中进行高亮搜索
Ctrl + D编辑:删除当前光标所在行的内容
Ctrl + S编辑:对已修改的模板文件进行保存
Ctrl + UCtrl + Shift + U编辑:对已选中的文本,进行字母小写(或大写)转换
ESC编辑:关闭正在编辑的文件
Alt + ↑Alt + ↓编辑:在文档中上(下)移动光标所在行的代码
Ctrl + EnterCtrl + 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;

版本发行时间

更新内容:主界面进行优化;支持添加多个 *.json 自定义配置文件;模板支持 include 导入文件
更新内容:移除主界面的 自定义参数 配置,调整为在模板文件中添加 template.json 来控制;
更新内容:扩展 Liquid 语法;编辑时可缩放字体&实时预览生成效果;生成的文件支持一键移动到指定目录;
更新内容:支持 SqlServer、Orcale、DM(达梦)、PostgreSQL 数据库;
更新内容:补充是否自增列、表备注

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 -%}导入文件,支持 【/】根目录、【./】当前目录、【../】上级目录(支持多级)
分享到:
本文链接:https://blog.renzicu.com/2023/06/183.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
THE END
二维码
打赏
文章目录
关闭
目 录