一个框架同时搞定 JSON CRUD API、SQL 模板引擎、跨库联邦查询、低代码可视化、AI 工具接入——这不是 PPT,是已经发布到 Maven Central 的开源项目。
痛点:为什么我们需要一个新的数据库框架?
Spring Boot 生态里不缺数据库框架。MyBatis 够成熟,JPA 够标准,jOOQ 够灵活。但在实际的企业项目中,你可能经常会遇到这些场景:
- 运营需要一个后台管理页面,但 CRUD 写起来太枯燥,低代码平台又不想引入整套体系
- 报表系统要跨 MySQL 和 PostgreSQL 联合查询,结果只能在代码里分别查出来再拼
- AI 要接数据库,但你不放心把数据库连接直接给 LLM,需要一个安全的中间层
- 动态条件查询写得太多,每次都是 if/else 拼接 SQL,维护到怀疑人生
这些问题,每一个都不难解决,但每一个都够烦。SQL 工坊(SQL Forge) 就是为了解决这些"不难但烦"的问题而生的。
它是什么
SQL Forge 是一个 Spring Boot Starter 级别的数据库操作框架,已发布到 Maven Central(io.github.wb04307201,当前版本 1.6.1)。引入依赖即可使用,按需加载模块。
一句话概括:它把数据库操作抽象成了五层能力,每一层都能独立使用,组合起来又是一个完整的解决方案。

SQL 工坊项目架构图
五层能力,逐一拆解
第一层:JSON CRUD API——不写后端代码,直接操作数据库
引入 sql-forge-spring-boot-starter 后,框架会自动基于你的 DataSource 注册一个数据库执行器。然后你就可以直接通过 HTTP POST JSON 来执行增删改查:
POST /sql/forge/api/json/select/user
{
"conditions": [{"field": "status", "operator": "eq", "value": "active"}],
"orderBy": [{"field": "created_at", "direction": "desc"}],
"page": 1,
"size": 20
}
支持 select、selectPage、insert、update、delete,支持条件组合、关联查询、分页、分组、去重。不需要写一行 Java 代码。
这对于快速搭建后台管理、给低代码平台提供数据源、或者做内部工具,极其方便。
第二层:SQL 模板引擎——动态 SQL 的正确打开方式
告别 MyBatis 的 XML 地狱。SQL Forge 的模板引擎使用 <if>、<foreach>、#{var} 语法,支持动态条件拼接:
<select id="findUsers">
SELECT * FROM user
WHERE status = 'active'
<if test="name != null">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
<if test="roleIds != null">
AND role_id IN
<foreach collection="roleIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
模板通过 REST API 管理,支持版本控制,可以在 Web Console 里直接调试。
第三层:Entity 模块——编译期安全的 Lambda 链式操作
对于喜欢类型安全的开发者,Entity 模块提供了 Lambda 表达式驱动的链式 API:
entityService.select(User.class)
.where(User::getStatus).eq("active")
.and(User::getAge).gt(18)
.orderBy(User::getCreatedAt).desc()
.page(1, 20)
.execute();
字段引用是编译期安全的——如果你重命名了 status 字段,IDE 会直接标红,不用等到运行时才发现问题。
第四层:Calcite 跨库联邦查询——一条 SQL 查多个数据库
这是 SQL Forge 最有差异化的能力。基于 Apache Calcite,你可以用一条 SQL 同时查询 MySQL、PostgreSQL 等不同数据库中的数据:
-- 一条 SQL 跨 MySQL 和 PostgreSQL 联合查询
SELECT a.order_id, b.customer_name, c.product_name
FROM mysql_db.orders a
JOIN pg_db.customers b ON a.customer_id = b.id
JOIN mysql_db.products c ON a.product_id = c.id
不需要 ETL,不需要数据同步,配置好数据源后直接查。对于需要做数据聚合报表、跨系统数据对账的场景,这个能力极其有价值。
第五层:MCP Server——让 AI 安全地操作数据库
这是 SQL Forge 最前沿的能力。sql-forge-mcp 模块提供了一个基于 stdio 传输的 MCP(Model Context Protocol)服务器,让 Claude Desktop、Cursor、Windsurf 等 AI 工具可以通过标准协议安全地操作数据库。
AI 不直接拿数据库连接,而是通过 MCP 工具调用 SQL Forge 的 JSON CRUD API 和 SQL 模板。你控制 AI 能做什么、不能做什么。
运行方式也很简单,通过 jbang 启动,无需本地安装:
jbang io.github.wb04307201:sql-forge-mcp:1.6.1
Web Console:开箱即用的可视化管理
引入 sql-forge-web-spring-boot-starter 后,你会得到一个完整的 Web 管理控制台,访问 /sql/forge/web 即可:

Web 控制台主界面
控制台包含:
- 数据库元数据浏览——表结构、字段、索引一目了然
- SQL 调试器——直接写 SQL 执行,实时看结果
- JSON API 调试器——在线构造 JSON 请求,测试 CRUD
- SQL 模板管理——在线编辑、调试、发布模板
- Amis 低代码模板管理——可视化配置页面,直接渲染

Amis 低代码模板渲染效果
底层用的是百度开源的 Amis 框架,SQL Forge 在上面封装了一层模板管理能力,让你可以通过 API 动态管理页面配置。
技术选型
| 技术 | 版本 | 用途 |
|---|---|---|
| JDK | 17+ | 最低要求 |
| Spring Boot | 3.5.x | 基础框架 |
| Apache Calcite | 1.41.0 | 跨库联邦查询 |
| MVEL2 | 2.5.2 | 表达式引擎 |
| JSqlParser | 5.3 | SQL 解析 |
| Amis | — | 低代码前端框架 |
项目已发布到 Maven Central,包含四个 Starter:
sql-forge-spring-boot-starter——核心能力sql-forge-calcite-spring-boot-starter——跨库联邦查询sql-forge-web-spring-boot-starter——Web Console + Amissql-forge-mcp——MCP Server
它和其他项目的关系
SQL Forge 不是一个孤立的项目。它可以作为 AI 原生企业解决方案的数据层基座:
灵梭(Loom Agent) ←—— MCP 协议 ——→ SQL 工坊(SQL Forge)
AI 编排 + 聊天 UI 数据操作 + MCP Server
RAG + Skill CRUD + Calcite + Amis
\ /
\ /
JavaBrain(组合示例)
- 灵梭(Spring AI Loom Agent) 是 AI 编排层,负责聊天、RAG、MCP 工具调用。它通过 MCP 协议调用 SQL Forge 的能力,让 AI 可以安全地操作数据库。
- JavaBrain 是这两个项目的组合示例,展示了灵梭 + SQL Forge 如何协同工作,实现自然语言数据分析、智能低代码页面生成等企业级能力。
两个项目各自独立发布、独立使用,组合在一起就是完整的企业 AI 基础设施。
适合谁用
| 场景 | 怎么用 |
|---|---|
| 快速搭建后台管理 | JSON CRUD API + Amis 低代码,半天搞定 |
| 动态报表查询 | SQL 模板引擎 + 条件组合 |
| 跨系统数据聚合 | Calcite 联邦查询,一条 SQL 搞定 |
| AI 接入数据库 | MCP Server,安全可控 |
| 内部工具开发 | JSON API + Web Console 调试 |
写在最后
SQL Forge 不是一个"颠覆性"的框架,它解决的都是实实在在的痛点。没有花哨的概念,只有好用的工具。
项目地址:
Maven Central 坐标:
<dependency>
<groupId>io.github.wb04307201</groupId>
<artifactId>sql-forge-spring-boot-starter</artifactId>
<version>1.6.1</version>
</dependency>
如果你正在做 Spring Boot 项目,尤其是需要频繁和数据库打交道、需要给 AI 接入数据能力的场景,值得一试。

1805

被折叠的 条评论
为什么被折叠?



