告别重复造轮子:SQL Forge — 让 Spring Boot 的数据库操作回归简单
你还在为每张表写一遍 Controller、Service、Mapper、SQL 吗?
你还在为前端想做个列表页而后端要排三天吗?
你还在为"让 AI 查个数据"不知道从哪里下手吗?SQL Forge 给你一个不一样的答案。

📌 推荐录制内容(30~60s):启动
sql-forge-test→ 浏览器打开/sql/forge/web→ 左侧数据库元数据树展开 → 在 JSON API 调试台发一个@where查询看到结果 → 切到 Amis 模板管理保存一个 CRUD 模板 → 渲染出完整表格页面。整个过程一行 Java 代码都不写,这就是 SQL Forge 的核心承诺。
一、为什么需要 SQL Forge?
做 Java Web 开发这些年,我们大多数时间其实都花在"和数据库打交道"上:
- 一张表一个 Entity、一个 Mapper、一个 Service、一个 Controller
- 一个查询要写
@RequestMapping、参数解析、SQL 拼接、结果封装、分页、排序…… - 跨库查询要么走 ETL,要么自己造各种 adapter
- 想让 AI 帮你查个数据?又得做一套 HTTP 接口、再做 MCP 适配
这些工作,80% 是重复的。
SQL Forge 的思路很简单:
把数据库操作抽象成一套统一的执行器;把"写 SQL"这一层从 Controller / Service 里彻底剥离。前端、AI、其他系统通过 JSON / HTTP / MCP 就能直接驱动。
二、SQL Forge 是什么?
SQL Forge(SQL 工坊)是一个基于 Spring Boot 3 + Java 17+ 的数据库操作框架,已发布到 Maven Central。
一张表看懂核心能力
| 能力 | 一句话解释 |
|---|---|
| 🛠 统一执行器 | 一套接口同时支持项目数据源、Calcite 联邦、第三方系统 |
| 🔌 JSON CRUD API | 前端发 JSON 描述条件,后端自动生成 SQL |
| 🧱 Entity 链式操作 | Lambda 引用字段,编译期安全;select / insert / update / delete / save 一应俱全 |
| 📜 SQL 模板引擎 | 基于 Enjoy,支持 <if> <foreach> 动态拼 SQL |
| 🌐 Calcite 跨库联邦 | 一条 SQL 同时查 MySQL + PostgreSQL + H2 |
| 🎨 Amis 低代码 | 保存 JSON Schema,渲染出完整 CRUD 页面 |
| 🤖 MCP AI 工具 | 通过 stdio 把数据库能力暴露给 Claude / Cursor / Windsurf |
| 🔐 内置认证 | Session 登录 + ApiKey,默认账号 admin / admin123 |
模块架构:按需引入,绝不强加依赖
sql-forge-parent
├── sql-forge-spring-boot-starter 基础:JSON API + Entity + SQL 模板
├── sql-forge-calcite-spring-boot-starter Calcite 跨库联邦(可选)
├── sql-forge-web-spring-boot-starter Amis + Web Console(可选)
└── sql-forge-mcp MCP AI 工具(独立进程)
三、5 分钟上手
引入依赖
<dependency>
<groupId>io.github.wb04307201</groupId>
<artifactId>sql-forge-spring-boot-starter</artifactId>
<version>1.5.12</version>
</dependency>
启动 Spring Boot —— 不写一行 Controller,你就拥有了完整的 CRUD API:
POST http://localhost:8080/sql/forge/api/json/select/users
Content-Type: application/json
{
"@where": [
{ "column": "category", "condition": "EQ", "value": "admin" }
],
"@order": ["username ASC"]
}
返回:
[
{ "id": "26a05ba3-...", "username": "wb04307201", "category": "admin" }
]
整个流程就是:前端发 JSON → 后端翻译成 SQL → 执行 → 返回。
没有 Controller,没有 Mapper,没有拼接字符串。
四、杀手级特性
1️⃣ Entity — 写 Java,不写 SQL
类型安全的链式 API,编译期就能发现字段名错误:
EntitySelect<User> select = Entity.select(User.class)
.columns(User::getId, User::getUsername, User::getCategory)
.eq(User::getCategory, "admin")
.in(User::getUsername, "alice", "bob")
.orderDesc(User::getId);
List<User> users = entityExecutor.run(select);
Entity.save(user) 自动判断新增 / 更新,insert / update / delete / selectPage 全套链式调用一气呵成。Lambda 引用 + 构建器模式,让 Java 终于像 MyBatis-Plus 一样丝滑,却不再受限于注解或 XML。
2️⃣ SQL 模板 — 把 SQL 写进配置,把参数交给调用方
SELECT * FROM users
WHERE 1=1
<if test="name != null && name != ''">
AND username = #{name}
</if>
<if test="ids != null && !ids.isEmpty()">
<foreach collection="ids" item="id" open="AND id IN (" separator="," close=")">
#{id}
</foreach>
</if>
ORDER BY username DESC
保存到 SQL Forge 模板中心:
PUT /sql/forge/api/template/sql
{
"id": "query-users",
"executorName": "database",
"context": "SELECT * FROM users WHERE 1=1 ..."
}
调用方只需 POST 一段 JSON:
{ "name": "alice", "ids": ["1", "2", "3"] }
非开发也能改 SQL,业务和数据彻底解耦。
3️⃣ Calcite 跨库联邦查询 — 一次查询多库
订单在 MySQL、商品在 PostgreSQL、字典在 H2?不用 ETL、不用同步表、不用宽表,一条 SQL 搞定:
SELECT o.id, u.username, p.name
FROM MYSQL_DB.orders o
JOIN POSTGRES_DB.products p ON o.product_id = p.id
JOIN MYSQL_DB.users u ON o.user_id = u.id
WHERE o.create_time > '2025-01-01';
SQL Forge 自动注册 executorName=calcite 执行器,原生 JSON API 全部支持:
POST /sql/forge/api/json/select/orders?executorName=calcite
异构数据库,对你来说就是一张表。
4️⃣ MCP AI 工具集成 — 让 Claude 直接查你的库
把 SQL Forge 的 MCP 服务器加进 Claude Desktop / Cursor:
{
"mcpServers": {
"sql-forge-mcp": {
"command": "jbang.cmd",
"args": [
"io.github.wb04307201:sql-forge-mcp:1.5.12",
"--sql.forge.mcp.systems[0].name=订单系统",
"--sql.forge.mcp.systems[0].url=http://localhost:8081",
"--sql.forge.mcp.systems[0].description=订单系统",
"--sql.forge.mcp.systems[0].apiKey=test"
]
}
}
}
然后直接对 AI 说:
“帮我看下订单系统上周的总销售额,按商品类目分组。”
Claude 会自动调用 getMetaDataTables → executeSQL → 给你结构化结果。完全不用写代码,AI 直接对接生产数据。
5️⃣ Web Console + Amis — 可视化一切
引入 sql-forge-web-spring-boot-starter 后,访问 /sql/forge/web:
- 📊 数据库元数据树(表 / 字段 / 索引 / 外键)
- 🧪 JSON API 在线调试(填条件、看 SQL、看结果)
- 📜 SQL 模板管理 + 执行测试
- 🎨 Amis 模板管理(保存 JSON Schema 即渲染完整 CRUD 页面)
- 👤 用户 / 角色 / 权限管理
做内部工具、写后台、做 Demo,效率翻倍。
五、扩展点丰富,但绝不绑架你的代码
| 你想做什么 | 怎么做 |
|---|---|
| 加自定义执行器 | 实现 IExecutor 接口,注册为 Spring Bean |
| 改写 JSON API 入参 | 实现 IBeforeRecordExecutor<T> 切面(密码加密、自动时间戳、审计日志) |
| 模板存数据库 | 实现 ITemplateSqlStorage / ITemplateAmisStorage |
| 自定义用户/角色存储 | 实现 IUserStorage / IRoleStorage / IUserRoleStorage |
| 暴露新的 MCP 工具 | 在 SqlForgeMcpService 上加 @Tool / @ToolParam |
所有默认实现都标注了 @ConditionalOnMissingBean —— 你的实现自动覆盖默认,零侵入。
六、谁适合用 SQL Forge?
✅ 企业内部系统:表多、迭代快,前端有 Vue/React 但不想每个页面写后端
✅ 低代码 / BI 平台:需要一个稳定、可扩展的 SQL 执行内核
✅ AI 应用:想给 LLM 提供结构化、可控的数据库访问能力
✅ 跨库查询:不想上 ETL、不想建宽表、不想做实时同步
✅ 个人 / 中小团队:想快速搭 Demo、做原型、写工具
❌ 不推荐给:
- 极致追求 SQL 性能调优的场景(请直接用 JPA / MyBatis-Plus 原生 SQL)
- 已经有完整 ORM 体系且不愿重构的项目
七、立即开始
- 🔗 GitHub: https://github.com/wb04307201/sql-forge
- 🔗 Gitee: https://gitee.com/wb04307201/sql-forge
- 📦 Maven Central:
io.github.wb04307201:sql-forge-spring-boot-starter - 📖 文档: README.zh-CN.md
一行依赖,五分钟上手。让 Spring Boot 的数据库操作回到它本来的样子:
简单、纯粹、可控。
Apache 2.0 开源协议,欢迎 ⭐ Star、Fork、Issue、PR。
Made with ☕ by wb04307201
更多推荐




所有评论(0)