SpringBoot + FreeMarker + React SQL 数据生成平台(SQLFather)
SpringBoot + FreeMarker + React SQL 数据生成平台(SQLFather)
基于 Spring Boot + React 的智能化数据建表和模拟数据生成工具,支持可视化建表、智能导入、导入 Excel 等多种方式,一键生成建表 SQL、模拟数据和代码。实战多种设计模式(工厂、建造者、门面、策略)、Schema 设计、Druid SQL 解析器、FreeMarker 模板引擎、模拟数据、Excel 导入导出等。

一、项目介绍

这是一套实用性极强的数据生成平台项目教程,基于 Spring Boot + React 开发 SQL 模拟数据生成工具,让你告别重复写 SQL 建表和造假数据的麻烦,大幅提高开发测试效率!

SQL 数据生成平台解决的核心问题很简单也很实用:如果你做新项目的时候,不用写建表 SQL、不用造数据,能直接得到一个造好了假数据的表,那该有多好~

在线体验:http://sqlfather.yupi.icu

视频演示(使用教程):https://www.bilibili.com/video/BV1eP411N7B7/

前端代码仓库:https://github.com/liyupi/sql-father-frontend-public

后端代码仓库:https://github.com/liyupi/sql-father-backend-public

导学视频:https://www.codefather.cn/course/1789200994552225793/section/1808341395433132033?contentType=video&tabKey=videoList

image.png

项目的核心价值在于其强大的智能转换能力,你可以通过多种方式快速生成表结构:

  • 填写可视化表单,快速生成建表语句、模拟数据和各种代码
  • 直接导入建表语句,一键生成模拟数据
  • 导入 Excel 表格,快速完成建表
  • 甚至支持智能导入,输入几个单词就自动生成表格和数据。

此外,平台还提供了丰富的数据生成规则,包括固定值、随机值、正则表达式、递增值,甚至支持选择词库来生成特定范围内的随机值。而且鱼皮还为它设计了社区能力,支持词库、表设计、字段信息的共享,也让团队协作变得更加高效。

当然,学会这个项目后,你不仅能开发出实用的数据生成工具,更重要的是能掌握一套完整的产品级项目开发经验,对提升编程能力很有帮助!

二、项目优势

项目收获

这个项目实用性强,真正解决了开发者日常工作中的痛点。通过学习这个项目,你将掌握从需求分析到产品上线的完整开发流程,积累宝贵的项目经验。

你将学会下面的知识和技能:

  • 前端方面,你会接触到复杂的嵌套动态表单开发、代码编辑器集成、文件上传处理等高级功能。这些都是企业级项目中经常用到的技术,掌握后能显著提升你的前端开发水平。
  • 后端方面,项目运用了多种经典设计模式,包括工厂模式、建造者模式、门面模式等,这些设计模式的运用让代码结构更加清晰,扩展性更强。同时,你还会学会如何使用 Druid SQL 解析器、FreeMarker 模板引擎、数据造假库等实用工具。

除了技术层面,项目的架构设计也很有学习价值。整个系统采用 “任意输入 => 统一 Schema => 任意输出” 的核心设计理念,这种架构思想在很多场景下都能应用,比如数据转换、格式适配等。

项目还有其他优势:

  • 项目功能完整,包含用户前台和管理后台,达到了真正的上线标准。这让你能够体验到完整的产品开发流程,而不仅仅是简单的 Demo。
  • 使用的都是企业级开发的主流技术,学会后在求职面试中很有竞争力。
  • 代码质量高,目录结构规范,注释完善,非常适合作为学习材料和参考项目。

鱼皮系列项目优势

鱼皮原创项目系列以 实战 为主,用 全程直播 的方式,从 0 到 1 带大家学习技术知识,并立即实践运用到项目中,做到学以致用。

此外,还提供如下服务:

  • 详细的文字教程或直播笔记
  • 完整的项目源码
  • 1 对 1 答疑解惑
  • 专属项目交流群
  • ⭐️ 现成的简历写法(直接写满简历)
  • ⭐️ 项目的扩展思路(拉开和其他人的差距)
  • ⭐️ 项目相关面试题、题解和真实面经(提前准备,面试不懵逼)
  • ⭐️ 前端 + Java 后端万用项目模板(快速创建项目)

比起看网上的教程学习,鱼皮项目系列的优势:从学知识 => 实践项目 => 复习笔记 => 项目答疑 => 简历写法 => 面试题解的一条龙服务

从需求分析、技术选型、项目设计、项目初始化、Demo 编写、前后端开发实现、项目优化、部署上线等,每个环节我都 从理论到实践 给大家讲的明明白白、每个细节都不放过!

对比维度跟学鱼皮项目自学网上免费项目⭐️ 鱼皮项目优势
项目选题✅ 选题新颖,刻意避开网上热门项目传统项目场景(博客、商城、管理系统)增加区分度,提高简历通过率
学习人数✅ 少,不容易撞车百万以上,烂大街增加区分度,提高简历通过率
教学方式✅ 全程直播,带你敲每一行代码、带你踩坑和解决 Bug,不漏过每一个细节录制课程,视频虽然看起来简短、一帆风顺,但你遇到错误无从下手降低学习门槛,减少学习时长
直播笔记✅ 详细的官方笔记 + 精选学员优质笔记有笔记,但未经筛选学到更多知识细节
视频内容✅ 项目教程 + 经验分享项目教程学到更多编程经验
项目源码✅ 完整源码仓库 + 每章的提交记录 + 定期更新只有代码包、不更新节省时间,避免踩坑
项目答疑✅ 各项目交流群 + 答疑解惑 + 常见问题整理无免费的答疑服务,遇到问题自行解决节省时间
简历写法✅ 现成的简历写法节省时间、提高简历通过率
项目扩展✅ 给出扩展思路 + 学员作品共享开拓思路、拉开和其他人的差距
项目面试✅ 项目相关面试题、题解和真实面经提前准备,面试不懵逼

编程导航已有 **近 20 套项目教程!**每个项目的学习重点不同,几乎全都是前端 + 后端的 全栈项目

详细请见:https://codefather.cn/course(在该页面右侧有教程推荐和学习建议)

往期项目介绍视频:https://bilibili.com/video/BV1YvmbYbEgS

三、项目功能梳理

SQL 数据生成平台是一个功能完整的 Web 应用,分为用户前台和管理后台两个部分,为不同类型的用户提供相应的功能。

用户前台功能

用户前台主要面向普通开发者,提供数据生成和共享功能。

1)可视化建表功能:用户可以通过直观的表单界面,填写表名、字段名、字段类型、注释等信息,系统会自动生成对应的建表 SQL。这种方式特别适合那些对 SQL 语法不太熟悉,或者希望快速建表的用户。

2)多种快捷导入方式:其中,智能导入功能最为神奇,你只需要输入几个关键词,比如用户名、密码、邮箱,系统就能自动识别并生成完整的用户表结构。

其他:

  • 导入表功能支持从已有的表信息中快速复制结构。
  • 导入配置允许导入之前保存的表配置。
  • 导入建表 SQL 能够解析标准的 CREATE TABLE 语句,自动提取表结构信息。
  • 导入 Excel 功能可以从 Excel 文件的表头自动生成表结构。

3)一键生成多种格式:除了基本的 SQL 建表和插入数据语句,平台还能生成 JSON 格式的模拟数据,方便前端开发调试。更有意思的是,它还能生成 Java 实体类代码和前端 TypeScript 类型定义,这对全栈开发者来说非常实用。

4)灵活的模拟数据生成规则:

  • 固定值适合生成状态字段或默认值
  • 随机值能产生各种类型的随机数据,如随机姓名、邮箱、手机号等
  • 正则表达式规则让你能精确控制数据格式
  • 递增规则适合生成 ID 或序号
  • 定制词库功能允许从特定的词汇集合中随机选择,比如城市名、公司名等。

5)社区共享功能:

  • 词库共享让用户可以创建和分享自己的词汇库,支持词库继承,还能一键创建字典表,甚至可以用来决定今天吃什么~
  • 表信息共享允许用户分享自己设计的表结构,其他用户可以一键复制或导入
  • 字段共享功能让常用字段的定义可以重复使用,提高开发效率。

此外,平台还提供举报功能,维护社区内容质量。

管理后台功能

管理后台主要面向管理员,提供内容管理和用户管理功能。

  • 用户管理:包括用户信息查看、用户权限控制、用户行为监控等功能,确保平台的正常运行。
  • 词库管理:管理员能够审核和管理用户提交的词库内容,删除不合适的词汇,维护词库质量。
  • 表信息管理和字段信息管理:让管理员能够对共享的表结构和字段进行管理,确保共享内容的质量和有用性。
  • 举报管理:处理用户举报的不当内容,维护平台的健康发展。

四、技术选型

项目采用前后端分离的架构,技术选型都是当前企业级开发的主流技术栈。

前端技术栈

  • React 18 前端核心框架
  • Umi 4.x 企业级应用框架
  • Ant Design 4.x UI 组件库
  • Ant Design Pro Components 高级组件
  • TypeScript 类型系统
  • ESLint + Prettier 代码规范

依赖库:

  • monaco-editor 代码编辑器
  • copy-to-clipboard 一键复制
  • react-monaco-editor Monaco 编辑器 React 封装

后端技术栈

  • Spring Boot 2.7.x 核心框架
  • MyBatis Plus 3.5.x 数据库操作
  • MySQL 8.x 关系型数据库
  • Spring AOP 切面编程

第三方库:

  • FreeMarker 模板引擎
  • Druid SQL 解析器和连接池
  • datafaker 模拟数据生成
  • Apache Commons Lang3 工具库
  • Hutool 工具库
  • Gson JSON 处理
  • Easy Excel Excel 处理
  • Knife4j API 文档生成

五、架构设计

整体架构理念

SQL 数据生成平台的核心理念是 任意输入 => 统一 Schema => 任意输出

这种设计的巧妙之处在于将复杂的业务逻辑进行了有效的解耦。无论用户通过什么方式输入数据(可视化表单、SQL 语句、Excel 文件、智能识别),系统都会将其转换为统一的内部数据结构 TableSchema。然后基于这个统一的 Schema,系统可以生成各种不同格式的输出(SQL 语句、JSON 数据、Java 代码、前端代码等)。

这种架构的优势非常明显:扩展性强,添加新的输入方式或输出格式都不会影响核心逻辑;维护简单,每个模块职责单一,修改某个模块不会影响其他模块;复用性高,核心的 Schema 转换逻辑可以在不同场景下重复使用。

核心模块设计

系统被划分为四个核心模块,每个模块都有明确的职责:

1)Schema 构造器模块:负责将各种不同的输入源转为统一的 TableSchema 定义。这个模块的核心类是 TableSchemaBuilder,它提供了多个静态方法来处理不同的输入源。buildFromAuto 方法实现智能构建功能,通过分析用户输入的关键词,从词库中匹配相应的字段信息。buildFromSql 方法使用 Druid SQL 解析器来解析建表语句,这个功能特别强大,能够处理各种复杂的 SQL 语法。buildFromExcel 方法能够从 Excel 文件中提取表头信息,并智能推断字段类型。

2)统一 Schema 定义模块:本质上是一个 Java 类,用 JSON 格式来保存表和字段的完整信息。Schema 的设计非常全面,包含了数据库名、表名、表注释、模拟数据条数等表级信息,以及字段名、字段类型、注释、是否主键、是否自增等字段级信息。更重要的是,Schema 还包含了数据生成规则,如生成类型(固定值、随机值、正则表达式等)和生成参数。

3)生成器模块:负责根据 Schema 生成各种格式的数据和代码。这个模块体现了多种设计模式的应用。对于不同的生成类型,系统定义了不同的 Builder:SqlBuilder 负责生成 SQL 语句,DataBuilder 负责生成模拟数据,JavaCodeBuilder 负责生成 Java 代码,FrontendCodeBuilder 负责生成前端代码,JsonBuilder 负责生成 JSON 数据。这种设计让每个 Builder 都专注于自己的职责,代码结构清晰。

4)共享服务模块:提供词库、表信息、字段信息的共享功能,这些都是标准的 Web 服务,提供增删改查接口。

设计模式的运用

项目中运用了多种经典的设计模式,这是学习的重点之一。

1)建造者模式:在 Schema 构造和各种代码生成器中都有运用。每个 Builder 都专注于构建特定类型的内容,使用建造者模式让构建过程更加灵活和可控。

2)工厂模式:在数据生成器中体现。DataGeneratorFactory 作为工厂类,根据不同的生成类型创建相应的生成器实例。工厂模式结合单例模式,确保了生成器实例的复用,降低了系统开销。

3)策略模式:在 SQL 生成器中,SqlBuilder 使用方言来支持不同的数据库类型,每种数据库类型对应一个方言策略,目前实现了 MySQL 方言,未来可以轻松扩展支持其他数据库。

4)门面模式:在 GeneratorFacade 类中运用,这个类聚合了各种生成类型,对外提供统一的生成接口,隐藏了内部的复杂性。客户端只需要调用一个方法,就能获得所有类型的生成结果。

模板引擎的应用

在代码生成功能中,项目使用了 FreeMarker 模板引擎,因为代码生成本质上就是模板填充的过程。

  • Java 实体类的生成使用了 java_entity.ftl 模板,能够根据 Schema 信息生成标准的 Java 实体类,包括字段定义、getter/setter 方法、注释等。
  • Java 对象代码生成使用了 java_object.ftl 模板,能够生成包含模拟数据的 Java 对象实例化代码。
  • TypeScript 类型定义使用了 typescript_type.ftl 模板,为前端开发提供类型支持。

模板引擎的使用让代码生成功能具有很强的扩展性,要添加新的代码生成类型,只需要编写相应的模板文件即可。

整个架构设计体现了高内聚、低耦合的软件设计原则,每个模块都有明确的职责,模块之间的依赖关系清晰,这种设计让系统具有很好的可维护性和扩展性。

六、学习大纲

第 1 期:项目总览

  • 项目介绍

  • 项目功能梳理

  • 技术选型

  • 架构设计

  • 学习大纲

第 2 期:系统设计和初始化

  • 需求分析与系统设计
  • 数据库表结构设计
  • 后端项目初始化
  • 前端项目初始化

第 3 期:后端核心功能开发

  • 统一 Schema 设计
  • Schema 构造器开发(工厂模式 + 建造者模式)
  • 数据生成引擎实现(工厂模式 + 策略模式)
  • 代码生成器开发(模板引擎 + 策略模式)
  • 统一生成门面实现(门面模式)

第 4 期:智能解析和生成

  • Druid SQL 解析器应用

  • Excel 文件解析处理

  • 智能识别功能开发

  • Web 层开发

第 5 期:前端开发

  • 前端框架搭建与配置
  • 可视化建表表单实现
  • 动态表单组件开发
  • 代码编辑器集成
  • 多种导入方式的前端实现
  • 生成结果展示
  • 样式和交互优化

第 6 期:用户系统和社区功能

  • 用户系统设计实现
  • 社区功能实现
  • 管理后台功能实现

第 7 期:部署上线


看完这套教程,你将获得企业级项目开发的宝贵经验,并且能够独立完成类似项目的开发。加油吧鱼友们!