你还在为每张表写一遍 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 ForgeSQL 工坊)是一个基于 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 会自动调用 getMetaDataTablesexecuteSQL → 给你结构化结果。完全不用写代码,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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐