DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
痛点
每天写重复的联表查询、条件过滤、分页统计?表结构记不住,字段名总要翻文档?复杂动态 SQL 拼接到怀疑人生?
DBAPI AI 写 SQL 功能来了。只需用自然语言描述你的需求,AI 自动理解表结构、生成标准 SQL,还支持参数占位符和 MyBatis 风格动态 SQL,一键插入编辑器,直接运行。
怎么用
- 在 SQL IDE 右下角点击机器人悬浮按钮,打开 AI 对话框
- 输入
@搜索并选择要查询的表(自动获取字段名、类型、注释) - 用自然语言描述你要查什么
- AI 根据表结构 + 你的需求,秒出 SQL
支持 17+ 主流大模型:OpenAI、DeepSeek、Claude、通义千问、Gemini 等,兼容 OpenAI 格式即可接入。
案例一:生成普通 SQL
用户提问:查询所有用户的 id、用户名、邮箱和注册时间,按注册时间倒序
生成的 SQL:
sql
SELECT id, username, email, create_time FROM public.users ORDER BY create_time DESC
AI 自动识别字段名,不需要你记住任何表结构。生成后点击"插入编辑器"即可使用。
案例二:生成带参数占位符的 SQL
用户提问:根据用户 ID 查询用户信息
生成的 SQL:
sql
SELECT * FROM public.users WHERE id = #{id}
AI 自动使用 #{xxx} 安全参数占位符,杜绝 SQL 注入风险。#{id} 会在执行时被安全替换为预编译参数。
案例三:生成动态 SQL
用户提问:根据条件查询用户列表,按用户名模糊搜索、按状态筛选、按时间范围过滤,按时间倒序排序
生成的 SQL:
sql
SELECT * FROM public.users
<where>
<if test="username != null and username != ''">
AND username LIKE CONCAT('%', #{username}, '%')
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="startTime != null">
AND create_time >= #{startTime}
</if>
<if test="endTime != null">
AND create_time <= #{endTime}
</if>
</where>
ORDER BY create_time DESC
开启"动态 SQL"开关后,AI 会自动生成 MyBatis 风格的动态 SQL:
| 标签 | 作用 |
|---|---|
<where> + <if> | 条件自动拼接,多余 AND/OR 自动消除 |
#{username}、#{status} | 安全预编译参数占位符 |
<= | XML 转义的小于等于 |
调用 API 时只需传参数 JSON,动态 SQL 引擎自动解析执行:
json
{
"keyword": "张三",
"status": 1,
"startDate": "2025-01-01",
"endDate": "2025-12-31"
}解析后的真实 SQL:
sql
SELECT *
FROM public.users
WHERE username LIKE CONCAT('%', '张三', '%')
AND status = 1
AND create_time >= '2025-01-01'
AND create_time <= '2025-12-31'
ORDER BY create_time DESC为什么选择 DBAPI AI?
| 能力 | 说明 |
|---|---|
| 零学习成本 | 说人话,出 SQL |
| 懂你的表 | 自动通过 JDBC 获取字段名、类型、注释 |
| 安全第一 | #{xxx} 预编译,拒绝 SQL 注入 |
| 动态 SQL | MyBatis 风格的 <if>、<where>、<foreach> 信手拈来 |
| 私有化部署 | 支持 Ollama 本地模型,数据不出网 |
| 全平台 | DeepSeek、通义千问、OpenAI… 想用哪个用哪个 |
立即体验:打开 DBAPI SQL IDE → 点击右下角机器人 → 开聊。