# cinlan-jfinal-sql **Repository Path**: GnilGnoy/cinlan-jfinal-sql ## Basic Information - **Project Name**: cinlan-jfinal-sql - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-20 - **Last Updated**: 2025-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JFinal SQL Navigator 插件 JFinal SQL Navigator 是一个 IntelliJ IDEA 插件,用于解析 JFinal 的 SQL 模板并实现代码与 SQL 文件之间的快速跳转。 ## 功能特点 - 自动识别代码中的 `Db.getSqlPara` 方法调用,并解析其中的 SQL 模板名称 - 在代码编辑器中为 SQL 模板名称添加可点击的标识 - 支持通过多种方式跳转到对应的 SQL 文件: - 点击行标记图标 - 使用 Ctrl + 点击 SQL 模板名称 - 使用快捷键 Ctrl + Alt + B - 使用右键菜单中的 "Go to SQL File" 选项 - 支持多级目录结构下的 SQL 文件查找和跳转 ## 系统要求 - IntelliJ IDEA 2023.3.3 或更高版本 - JFinal 项目 - Java 11 或更高版本 ## 安装方法 ### 方法一:使用插件 JAR 文件安装 1. 从本项目的 `build/distributions` 目录下获取构建好的插件 JAR 文件 2. 在 IDEA 中,打开 `File` > `Settings` > `Plugins` 3. 点击齿轮图标,选择 `Install Plugin from Disk...` 4. 选择插件 JAR 文件,点击 `OK` 5. 重启 IDEA 完成安装 ### 方法二:从源代码构建 1. 克隆或下载本项目源代码 2. 在 Windows 环境中,打开命令提示符或 PowerShell,进入项目根目录 3. 运行 `gradlew.bat buildPlugin` 命令(注意:在 Windows 中使用 `gradlew.bat` 而不是 `./gradlew`) 4. 构建完成后,插件 JAR 文件将位于 `build/distributions` 目录下 5. 按照方法一的步骤 2-5 安装构建好的插件 ## 使用方法 ### SQL 模板文件结构 插件默认在 `resources/sql` 目录下查找 SQL 模板文件。SQL 模板文件应遵循 JFinal 的标准格式: ``` #namespace("namespace名称") #sql("sql标识") SQL语句内容 #end #sql("另一个sql标识") 另一个SQL语句内容 #end #end ``` ### SQL 模板名称格式 在代码中使用 `Db.getSqlPara` 方法时,SQL 模板名称应遵循 `namespace名称.sql标识` 的格式,例如: ```java Db.getSqlPara("user.find", Kv.by("id", id)); ``` 其中: - `user` 是 namespace 名称 - `find` 是 sql 标识 ### 导航方法 当光标位于 SQL 模板名称字符串上时,可以通过以下方式跳转到对应的 SQL 文件: 1. 点击行标记图标:在代码编辑器左侧的行标记区域点击图标 2. Ctrl + 点击:按住 Ctrl 键并点击 SQL 模板名称 3. 快捷键:使用 Ctrl + Alt + B 快捷键 4. 右键菜单:右键点击 SQL 模板名称,选择 "Go to SQL File" ## 常见问题解决 ### 问题:`./gradlew buildPlugin` 命令无法识别 错误信息: ``` ./gradlew : 无法将"./gradlew"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 ``` 解决方法: 在 Windows 环境中,应该使用 `gradlew.bat` 而不是 `./gradlew`。正确的命令是: ``` gradlew.bat buildPlugin ``` ### 问题:`sqlElement.navigate(true)` 方法不存在 解决方法: 我们已经修复了这个问题。在 `JFinalSqlUtil` 类中添加了 `navigateToElement` 方法,并在 `GotoSqlFileAction` 类中调用该方法。修复后的代码如下: ```java // 在 JFinalSqlUtil 类中 public static void navigateToElement(Project project, PsiElement sqlElement) { if (sqlElement != null) { sqlElement.navigate(true); } } // 在 GotoSqlFileAction 类中 for (PsiFile sqlFile : sqlFiles) { PsiElement sqlElement = JFinalSqlUtil.findSqlElement(sqlFile, sqlTemplateInfo.getSqlId()); if (sqlElement != null) { // 使用JFinalSqlUtil中的navigateToElement方法 JFinalSqlUtil.navigateToElement(project, sqlElement); break; } } ``` ### 问题:`isInGetSqlParaMethod` 方法的逻辑错误 原代码中的条件判断有逻辑错误,使用了 `||` 而不是 `&&`,这会导致方法总是返回 false。修复后的代码如下: ```java if (methodName == null || (!methodName.equals("getSqlPara") && !methodName.equals("getSql") && !methodName.equals("getSqlParaByString"))) { return false; } ``` ## 项目结构 - `src/main/java/fun/cinlan/plugin/jfinalsql/action/` - 包含导航相关的动作类 - `GotoSqlFileAction.java` - 实现跳转到 SQL 文件的动作 - `JFinalSqlGotoDeclarationHandler.java` - 实现 Ctrl+点击 导航 - `src/main/java/fun/cinlan/plugin/jfinalsql/provider/` - 包含提供者类 - `JFinalSqlLineMarkerProvider.java` - 实现行标记提供者 - `src/main/java/fun/cinlan/plugin/jfinalsql/util/` - 包含工具类 - `JFinalSqlUtil.java` - 实现 SQL 模板解析和导航功能 - `src/main/resources/META-INF/` - 包含插件配置文件 - `plugin.xml` - 插件的主要配置文件 ## 开发说明 如果您想参与开发或自定义插件功能,可以按照以下步骤进行: 1. 在 IntelliJ IDEA 中打开项目 2. 修改源代码 3. 使用 Gradle 任务面板运行 `runIde` 任务,这将启动一个包含插件的 IDEA 实例,方便调试和测试 4. 完成修改后,运行 `buildPlugin` 任务构建插件 ## 许可证 本项目基于 MIT 许可证发布。