# simplify-work
**Repository Path**: YephetsSkys/simplify-work
## Basic Information
- **Project Name**: simplify-work
- **Description**: 最灵活的代码生成工具,可在线添加13种数据源,json/yaml等数据类型;可在线修改模板,模板可配置动态变量。
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-09-05
- **Last Updated**: 2025-09-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1.概述
简介:最灵活的代码生成工具,可在线添加13种数据源,json/yaml等数据类型;可在线修改模板,模板可配置动态变量。
### 1.1.预览
- 构建
- 模板管理
- 数据源管理
- 构建记录
### 1.2.项目背景与目标
- 背景:为解决大量的重复性工作(比如最基础的CRUD),将公式化/模板化的工作抽取为实体模板,同一个类型的工作,只需亲历亲为编写一次,然后抽取模板,通过模板复刻即可生成可运行的代码。
- 目标:彻底摆脱公式化/模板化的编程工作。
- 概述:
- **【项目基于velocity模板引擎开发的模板系统,用于在线模板配置与代码生成】**
- 通过抽取高标准的模板,使用模板复刻高效产出高标准的代码;该项目作为AI代码生成的补充,AI专注于具体的功能实现,该项目专注于消灭公式化的编程工作。好比在建楼房,以前需要一年半才能建立好一座楼的钢筋混凝土结构,现在只需要知道建设标准,即可一分钟把楼房的钢筋混凝土建立起来。
### 1.3.使用技术或者框架:
- 后端:maven、springboot、aop、mybatis-plus、jdbc、lombak、hutool、knife4j、fastjson2、velocity、jsqlparser、junit、anyline(具体版本请查询源码的最外层pom.xml文件的properties部分)
- 前端:node18、vue3、element-plus、editor、axios、codemirror、json-editor-vue3、pinia、splitpanes(具体版本请查看前端源码的package.json文件)
### 1.4.核心功能简介
- 添加数据源
- 支持的数据库【ClickHouse、DB2、达梦、南大通用GBase8c、H2、人大金仓、MySQL、OceanBase、openGauss、Oracle、PostgreSQL、SQLite、SQL Server 2005+】13种数据库
- 模板编辑
- 当作普通的文件管理系统使用即可,添加文件夹,在文件夹下面添加模板
- 构建流程
- 选择模板=》编辑模板配置=》选数据源=》选表=》构建=》预览/下载
### 1.5.适用场景与目标用户
- 适用场景:
- 需要花大量时间编写相似功能的代码的场景,并且所编写的代码是可以抽取为模板的(比如大量的CRUD)
- 个人接单,制作自己的模板
- 公司做外包项目,制作公司专属模板
- 目标用户:想高效产出高标准代码的开发者用户。
- 推荐使用方式:将自己的常写的项目抽取为模板,要使用时即可根据模板生成代码。
- 不适用的用户:面对相同功能的十份需求,会亲历亲为写出十份不同的代码,并且抱着代码能跑就行的心态。
### 1.6.项目地址
- 下载使用:https://gitee.com/wang-er-1999/simplify-work/releases
- 源码地址:https://gitee.com/wang-er-1999/simplify-work.git
### 1.7.文档结构说明
```txt
my-simplify-work
│ .gitignore
│ pom.xml //后端依赖的版本定义
│ README.md //项目说明
├─logs //日志文件
├─images //说明文件的存放目录
├─sw-admin //后端项目源码
│ │ pom.xml //引入具体数据的jdbc连接依赖
│ └─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─wanger
│ │ │ └─sw
│ │ │ └─config //配置代码
│ │ │ ├─autoDDL
│ │ │ │ └─impl //扩展支持的数据库类型
│ │ │ └─swTools //系统工具注册与实现
│ │ │ ├─controller //控制器
│ │ │ ├─convert //转换器
│ │ │ ├─domain //数据库映射代码
│ │ │ ├─dto //dto层
│ │ │ ├─service //服务层
│ │ │ └ SWApplication.java //启动类
│ │ └─resources
│ │ │ application.yml //基础配置文件
│ │ └─static //打包后的前端静态文件
│ └─test //测试代码
├─sw-common //公共工具模块
└─sw-ui //前端页面源码
```
## 2.快速上手
### 2.1.启动服务
#### 2.1.1.下载jar包启动
在gitee上面找到,标签=》查看发行版=》下载simplify-work-run.zip后解压启动
#### 2.1.2.源码启动
拉取项目=》启动=》登录系统=》添加数据源=》导入模板=》构建代码=》启动生成的项目
### 2.2.使用
- 登录系统:当前该系统并没有用户体系,直接使用admin/admin即可进入
- 添加数据源:
- 导入模板:在项目的bak目录下找到【SW_Templates_2025_03_08_21_36_32_755.zip】压缩包文件,导入该zip文件,(关于该模板的介绍参考附录)
- 构建代码(无脑下一步):选择模板=》配置模板=》选择数据源=》配置数据源=》构建=》预览/下载
- 下载后即可使用生成的项目
## 3.准备工作
- 系统/环境要求
- jdk:1.8(切换jdk17,直接修改最外层的pom.xml的java.version即可,该java.version是项目中唯一定义jdk版本的地方)
- 账号注册与登录指引
- 登录:目前没有做用户体系,直接使用admin/admin登录即可
- 一个用于代码生成的目标数据库【数据库类型参考】
## 4.使用指南
### 4.1 添加数据源
- 支持的数据源类型MySQL、PostgreSQL、Oracle11g(目前只支持部分支持jdbc连接的数据库)
- 数据源配置步骤
-
### 4.2 自定义模板
- 基本功能介绍:
- 添加/修改:
- 功能入口:
- 通过点击模板管理的两个图标或者单击模块
-
- 功能介绍:
- 必填字段:名称必填
- 数据渲染顺序:该模板在数据渲染时的处理顺序依次为【展开字段 => 字段别名 => 动态字段 => 模板名称、是否压缩表达式、是否跳过表达式】
- 展开字段:要比如配置的为tables,则会根据tables数组的数据动态生成多个当前文件
- 字段别名:展开后的字段别名,
- 与展开字段的关系【展开字段.forEach(字段别名->{动态字段配置})】
- 比如配置的展开字段为tables,字段别名为table,则【tables.forEach(table->{动态字段配置})】
- 动态字段:就是从外部传入的当前模板的动态参数,
- 作用域:当前模板/文件夹下面的所有子模板
- 覆盖规则:当出现子模版与父模板的动态字段重名时,在实际渲染模板内容时子类模板的动态字段值将覆盖父级的同名动态字段值
- 功能支持:支持velocity语法的占位符,以及对已经注册的java工具类的调用
- 导入:
- 支持类型:支持对导出的模板进行导入,与支持直接对普通文件打包的zip文件进行导入
- 格式要求:必须为zip格式
- 删除:删除后不可恢复,同时会递归删除所有子类模板与对应的动态字段
- 拖动:模板支持直接拖动操作
- 数据与工具代码提示
- 数据源:可选择在【数据源管理】模块配置的数据结构进行预览
- 模板文件:
- 系统工具:注册系统工具参考【高级功能=》注册系统工具】
### 4.3 构建流程
- 参考快速上手
### 4.4 代码生成
- 参考快速上手
### 4.5 代码预览与下载
- 参考快速上手
## 5.高级功能
### 1.AutoDDL介绍
- 功能介绍:
- 基于anyline实现的自动检查与执行ddl的工具,用于启动时检查数据表结构与java类的差异,以及根据java类修改数据库表结构
- 相应在页面上面添加自己的数据库类型支持,则需要参照sw-admin模块的config.autoDDL.impl目录下的其他类型数据库实现,编写自己想要实现的数据库类型支持
- 配置说明
```yml
mybatis-plus:
configuration:
auto-ddl:
enabled: true #开启检查实体类与表结构差异
executeDdl: true #执行ddl自动建表
scan-package: com.wanger.* #配置实体类entity的包路径
# ignore-table: #配置需要忽略的表名
# - sys_user
# ignore-entity: # 配置需要忽略的实体类
# - com.wanger.swa.domain.po.UserPO
```
### 2.添加更多类型的数据源支持
- 由于本系统的数据库表结构读取是基于上述auto-ddl实现的,所以扩展数据源类型就是扩展auto-ddl类型
- 扩展说明
- 参考:
- 数据库类型扩展说明:
- 需要在sw-admin模块的pom.xml引入对应数据库的jdbc依赖,与对应的anyline依赖
-
- 需要参考上述实现,编写一个类并实现AutoDDLService类,并使用@Component标识为springboot项目的bean,至少实现以下方法
- getContentType:声明指定数据库的类型与对应的jdbc驱动
- getDataType:配置java类型与数据库字段的类型映射关系,用于生成ddl
- getFieldMappers:配置数据库字段类型与java类型的映射,用于表结构读取
### 3.扩展数据实例类型
- 当前以及实现json、property、xml、yaml四种数据实例类型
- 如果需要支持其他数据实例类型,则需要遵循以下规范
- 参考
- 编写自己的数据类型实现类,并实现DataInstanceService接口,使用@Component标记为springboot的bean
### 4.扩展注册系统工具
- 参考
- 扩展说明:需要实现SysToolInfo接口,并使用@Component标识为springboot项目的bean,并实现以下三个方法
- toolType:该工具对应的Java类
- getTitle:标题
- getTips:提示内容
-
###
## 6.常见问题(FAQ)
- 待补充
## 7.附录
### 1.velocity模板语法参考手册
[Velocity 中文文档](https://wizardforcel.gitbooks.io/velocity-doc/content/1.html)
### 2.模板【SW_Templates_2025_03_08_21_36_32_755.zip】介绍
- 项目由api(api模块)、common(公共模块)、operation(业务逻辑模块)三大模块组成,
- 注意事项:该模板中使用了很多mybatis-plus的xxxById()方法,所以要求要生成代码的表都要有id字段
- 项目结构
``` txt
demo-project
├─dp-api //api模块,分为
│ ├─dpa-admin //管理平台api,常用于管理系统,该模块通常有更严格的权限控制
│ │ ├─src
│ │ │ └─main
│ │ │ ├─java
│ │ │ │ └─com
│ │ │ │ └─wanger
│ │ │ │ └─dpaa
│ │ │ │ ├─config //基本配置类
│ │ │ │ └─controller //api控制器
│ │ │ └─resources //log,yml等配置文件
│ │ │ └─static //前端地址
│ └─dpa-open //开放平台api,常用于app、openApi等提供给其他人使用的api,该模块通常需要保证更高的可用性
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─wanger
│ │ │ └─dpao
│ │ │ ├─config //基本配置类
│ │ │ └─controller //api控制器
│ │ └─resources //log、yml等配置文件
│ │ └─static //前端地址
├─dp-common //通用工具、公共类等
└─dp-operation //业务逻辑模块
```
- 示例模板生成项目如下
- 解压下载下来的zip压缩包,打开进入解压后的文件找到【demo-project】之前配置的项目名称,使用idea打开该项目,在dp-api大模块下找到【AdminApplication】与【OpenApplication】启动类,直接启动,看到如下信息表示项目启动成功
- 访问swagger页面【http://localhost:2099/dpao/doc.html】
- 访问前端页面【http://localhost:2099/dpao】(该模板配置的前端页面只配置了最简单的测试页面)
### 3.技术支持联系方式
- QQ:
- 微信:
## 8.版本更新记录
- v1.0.0 (2025-3) 初始版本发布
- v2.0.0 (2025-3-23) v2.0.0版本发布
- 发布日志:
- 新增数据源实例(xml、json、yml/yaml、property)支持
- 新增数据源类型:db2、h2、openGauss、oceanbase、dm、kingbasees、gbase8c、sqlserver类型数据库支持
- 新增部分表单内容验证
- 修复添加数据源时数据源类型显示错误
- 修复前端代理页面api端口配置错误
- 修复无法添加sqlite类型数据结构
- 修复构建后端验证表单内容失败时页面功能不可用问题
- 优化数据源添加/修改弹窗可拖动
- 优化元数据查询逻辑
- 优化自动ddl逻辑
- 优化自定义实现数据库支持的方式