SqlToy Navigator 插件介绍
插件定位
SqlToy Navigator 是一款面向 SqlToy ORM 项目的 IntelliJ IDEA 插件,用于提升 Java 代码与 XML SQL 定义之间的导航、阅读和维护效率。
插件核心解决的问题是:在 SqlToy 项目中,Java 代码通常通过字符串形式引用 XML 中的sqlId,当项目规模变大后,开发者需要频繁在 Java 类、XML 文件和全局搜索结果之间切换,定位成本高,也容易维护错误的 SQL。
SqlToy Navigator 将这种依赖搜索的低效流程,升级为 IntelliJ IDEA 原生的双向导航体验。
核心功能
1. Java 到 XML 精确跳转
在 Java 代码中的sqlId字符串上使用Ctrl + Click,或者点击左侧图标,即可跳转到 XML 中对应的 SQL 定义。
示例 Java 代码:
lightDao.find("view_user_list", queryParam, User.class);对应 XML SQL 定义:
<sql id="view_user_list"> SELECT * FROM TEST_TABLE </sql>2. XML 到 Java 反向定位
在 XML 的<sql id="...">定义处,可以通过行标记跳转回 Java 中引用该sqlId的位置,方便快速判断 SQL 被哪些业务代码使用。
3. 双向行标记提示
插件会在 JavasqlId和 XMLid属性旁显示导航图标,让 SQL 引用关系在编辑器中直接可见。
4. sqlId 自动补全
在 Java 字符串中编写sqlId时,插件可以基于 XML 中已有 SQL 定义提供补全候选,并显示来源文件,降低拼写错误概率。
5. 重复定义友好处理
如果项目中存在重复的sqlId定义,插件会保留多个目标,由 IDEA 显示目标选择器,让开发者自行选择跳转位置。
6. XML SQL 高亮增强
插件会对 XML<sql>标签中的 SQL 正文进行高亮,包括:
- SQL 关键字
- 表名
- 表别名
- 字段别名
- 函数
- 命名参数
- 字符串
- 数字
- 注释
- 操作符
7. SqlToy 命名参数识别
插件支持识别:paramName形式的 SqlToy 命名参数,并进行特殊高亮,方便开发者区分 SQL 字段与运行时参数。
8. 未引用 SQL 提示
对于没有被 Java 代码引用的 XMLsqlId,插件会进行置灰提示,帮助开发者发现可能已经废弃的 SQL 定义。
9. SQL 块内单词高亮
在当前 SQL 块中选中字段、别名或参数时,插件会高亮同一 SQL 片段内的整词出现位置,方便检查字段引用关系。
10. Java 代码中常量定义识别
在当前 Java 代码中,很多时候会使用常量定义 sqlId,最后在调用处直接使用常量变量,这会使得在跳转 XML SQL 时候格外复杂,本插件也会在常量 SQL 常量变量左侧显示导航图标,方便检查字段引用关系。
插件优势
定位更准确
SqlToy Navigator 不是简单的字符串搜索,而是基于 IntelliJ IDEA 的 PSI、文件索引和缓存机制识别 Java 字符串与 XML SQL 定义之间的关系,减少普通字符串带来的干扰。
操作更自然
插件复用 IDEA 原生的跳转、补全、行标记和编辑器高亮能力,开发者不需要改变已有开发习惯。
维护更高效
开发者可以直接从 Java 跳转到 XML SQL,也可以从 XML SQL 反查 Java 使用位置,大幅减少手动搜索和文件切换。
风险更低
通过sqlId补全、重复定义多目标选择、未引用 SQL 置灰等能力,插件可以降低拼写错误、误跳转和误维护的风险。
阅读体验更好
XML 中的 SQL 不再是普通文本,关键字、表名、别名、函数和参数都有清晰的视觉区分,更接近独立 SQL 文件的阅读体验。
对大项目更友好
插件使用 IDEA 文件索引、候选文件预筛选、文件级缓存和索引状态保护机制,避免在大型项目或索引未完成时影响编辑器响应。
适用场景
SqlToy Navigator 适用于以下项目和团队:
- 使用 SqlToy ORM 的 Java 项目
sqlId数量较多、维护成本较高的项目- 经常需要从 Java 代码定位 XML SQL 的开发者
- 希望识别未使用 SQL、降低历史 SQL 清理风险的开发者
- 希望提升 XML SQL 阅读体验的开发者
兼容信息
当前插件源码版本:1.0.5
版本要求:
- IntelliJ IDEA 2024.1.1+
一句话总结
SqlToy Navigator 让 SqlToy 项目中的sqlId像 Java 方法引用一样可导航、可补全、可维护,把低效的字符串搜索升级为 IntelliJ IDEA 原生的双向 SQL 定位体验。
最后:欢迎下载插件体验,有问题回复,看到有时间会进行更正!!!