code generator
Visual Studio Code 代码生成器插件(地址:code generator dusk)。
1、安装要求
- Visual Studio Code v1.90.0+
2、效果展示







3、测试情况
- 已测试系统
- Windows 10,Windows 11
- Ubuntu 22
- 已测试数据库
mysql:5.7,8.0
postgresql:17
mssql:2012,2017,2019,2022
sqlite:v3
mariadb:11.8.2
4、代码生成器说明
基础说明
- 文件后缀为
.jstpl或(.jsin,可导入文件),模板格式类似jsp,只是脚本语言为js。

common/scripts中的文件为全局可调用的 js 脚本
- 脚本文件名必须为合法的 js 变量名
- 脚本文件名不要与系统内置成员重名
- 全局对象为
global,类似浏览器的window
- 使用
module.exports导出内部成员
module.export = {
...
}
模板说明
- 全局设置板块
<%@
//设置输出文件
out="java/${basePackagePath}/dto/${subName}/${moduleName}DTO.java"
%>
- 格式:
${expression}:变量引用(支持表达式),如:${formState.var1},${ formState.var1 && formState.var1 }
- 支持的设置类型:
out:设置文件输出路径字符串,支持${varName}格式的变量。
write:设置是否输出文件,若最终值为"no"、"false"、false、"0"、0时,则不会输出文件
execute 设置是否执行 js 脚本,若最终值为"no"、"false"、false、"0"、0时,则不会执行
include:引入子模板(*.jsin),优先在所选模板目录的 includes 下查找,若未找到、则在 common/includes 目录下查找
- 忽略后面的第一个行
- 局部脚本区域
<%
let varName = "World"
%>
Hello <%=varName%>
- 在当前模板下声明的变量,仅在当前模板下有效
- 忽略后面的第一个行
- 表达式输出
<%=expression%>
- 直接输出表达式结果
- 忽略后面的第一个行,在后面添加
!可保留后续的第一个换行,如:<%=currentDatetime!%>
- 特殊变量
out 用于输出内容
out.print(...) 直接输出内容
out.println(...) 结尾带换行符输出内容
tableInfo结构
{
name: string;
comment: string | null;
columns: Array<{
type: string;
allowNull: boolean;
defaultValue: string;
primaryKey: boolean;
autoIncrement: boolean;
comment: string | null;
}>;
}
- 配置文件
main.json5
databases用于设置数据库连接信息
attrs设置全局变量,可在模板脚本中直接访问变量
{
attrs: {
subName: "sub",
},
}
ui 可添加自定义参数输入组件
数据库配置
{
databases: {
current: "local-mysql",
items: {
"local-mysql": {
type: "mysql",
enable: true,
initSqls: ["SET NAMES utf8mb4"],
options: {
host: "localhost",
port: 3306,
username: "user",
password: "password",
database: "demo",
ssl: false,
dialectOptions: {
// https://github.com/sidorares/node-mysql2
insecureAuth: false,
},
},
},
"local-mariadb": {
type: "mariadb",
enable: true,
initSqls: ["SET NAMES utf8mb4"],
options: {
host: "localhost",
port: 4306,
username: "user",
password: "password",
database: "demo",
ssl: false,
dialectOptions: {
insecureAuth: false,
},
},
},
"local-pg": {
type: "postgres",
enable: true,
initSqls: [],
options: {
host: "localhost",
port: 5432,
username: "postgres",
password: "12345678",
database: "postgres",
schema: "public",
ssl: false,
},
},
"local-mssql": {
type: "mssql",
enable: true,
initSqls: [],
options: {
host: "localhost",
port: 1433,
username: "sa",
password: "123456",
database: "demo",
schema: "dbo",
ssl: false,
dialectOptions: {
options: {
trustServerCertificate: true,
encrypt: false,
},
authentication: {},
},
},
},
"local-sqlite": {
type: "sqlite",
enable: true,
initSqls: [],
options: {
storage: "./sample-files/test-sqlite3.db",
},
},
},
},
}
current:当前使用的数据库
items:数据库配置项
type:数据库类型,目前仅支持:mysql, postgres, mariadb, mssql, sqlite
enable:是否启用,当为 false 时,则不会访问数据库获取数据表
initSqls:连接成功后,初始执行的 sql 语句
options:数据库连接配置信息
自定义参数输入
{
ui: {
attr: "formState",
params: [
{
var: "prop1",
label: "参数1",
type: "checkbox",
forTemplates: ["MybatisPlus"],
forVars: [
{
var: "entityType",
op: "==",
value: "1",
},
],
default: {},
required: false,
options: [
{ text: "Entity", value: "entity", title: "" },
{ text: "Controller", value: "controller", title: "" },
],
},
{
var: "prop2",
label: "参数2",
type: "dropdown",
default: "",
required: false,
options: [
{ text: "Entity", value: "entity", title: "" },
{ text: "Controller", value: "controller", title: "" },
],
},
{
var: "prop3",
label: "参数3",
type: "textfield",
default: "",
required: false,
maxlength: 128,
title: "",
},
{
var: "prop4",
label: "参数4",
type: "textarea",
default: "",
required: false,
maxlength: 512,
title: "",
},
],
},
}
ui.attr:全局引用的变量,如:formState
ui.labelWidth:设置 label 文字宽度,取值:1~30
ui.params[]:声明输入组件
var:变量名
label:输入项标签
type:组件类型
- 复选框(
checkbox):被勾选的选项值为 true,如:Entity被勾选时,formState.prop1.entity===true
options:选项数据
options[].title:鼠标放置后,选项提示内容
- 下拉框(
dropdown):变量为选择选项的值,如:formState.prop2==='controller'
options:选项数据
options[].title:鼠标放置后,选项提示内容
- 单行输入(
textfield):变量为输入值
- 多行输入(
textarea):变量为输入值
forTemplates 可设置对哪些模板生效
forVars[] 可设置对哪些变量值生效
var:变量名
op 比较操作符
==:等于
!=:不等于
>:大于
<:小于
>=:大于等于
<=:小于等于
in:在数组中
nin:不在数组中
value:比较值
default:默认值
required:是否必填项
title:鼠标放置后显示的提示内容
5、已知问题
6、发布说明
1.0.6
- 修复模板 utils.js 重复导入 java import 的问题;
- 完善
ui.labelWidth,取值1~30;
- 支持显示已勾选项目;
- 增加
forVars 参数,用于控制ui.params组件是否显示;
1.0.5
1.0.4
- 全选操作对自定义添加项有效。
- 固定数据表表头。
- 添加自定义数据项后,滚动到对应位置。
- 支持定位当前勾选项,定位下一个勾选项。
- 参数配置表单加入
重置参数功能。
- 参数配置表单复选框支持
全选操作。
1.0.3
- 显示代码生成输出文件数量信息。
- 打包发布时,自动将
README.md文件中的图片链接改为https://cdn.jsdelivr.net/gh/前缀,以便中国大陆可以正常访问。
- 完善全局设置板块,
${expression}支持表达式,如:out = "${formState.var1 && formState.var2}"。
- 添加的模块可上下移动排序。
- 删除添加的模块时,弹出确认框。
- 搜索可过滤添加的模块,且搜索忽略大小写。
- 可折叠日志板块。
- 发布版去掉 source map 文件。
- 实时保存部分配置信息到文件。
1.0.2
- 较全面测试数据库:mysql、mariadb、postgres、mssql、sqlite
mysql:5.7,8.0
postgresql:17
mssql:2012,2017,2019,2022
sqlite:v3
mariadb:11.8.2
- 修复模板文件存在
\r\n导致换行出现问题的问题
- 执行代码生成时,返回结果为空导致报错的问题
1.0.0
- 支持数据库:mysql、mariadb(未测试)、postgres、mssql、sqlite
- 支持批量生成
- 以 js 为脚本语言
- 模板格式类似
jsp
- 支持自定义脚本(
common/scripts/*)
- 支持简单的输入组件(
ui)
- 可添加非数据库模块(暂不支持添加字段)