intellij idea 插件开垦–火速稳固到mybatis mapper文件中的sql,intellijmybatis

intellij idea 插件开发–快速定位到mybatis mapper文件中的sql,intellijmybatis

 intellij idea
提供了openApi,通过openApi我们可以自己开发插件,提高工作效率。这边直接贴个链接,可以搭个入门的demo;
idea 2017,jdk需要1.8以上。

    第一步:new project,选择IntelliJ Plaltform Plugin 如图,

图片 1

然后点击下一步,填写项目名,点击finish,项目结构如下:

图片 2

plugin.xml是插件的配置文件;

第二步:鼠标点击src文件夹,然后Alt+Insert 快捷键,选择action,如图:

图片 3

然后填写相关信息,这边分组到JavaGenerateGroup1,快捷键为Ctrl+Shift+X(即此快捷键执行这个action的代码)

图片 4

点击ok后,将创建名为GoToMapperAction的java类,以及plugin.xml中出现对应配置信息,如下图:

图片 5

图片 6

到此,执行快捷键Ctrl+Shift+X,就会执行actionPerformed方法了;接下来就是写具体逻辑代码了;

第三步:方法actionPerformed
中的参数AnActionEvent很有用,携带了交互的当前上下文信息,要检索活动project、选中的文件、编辑器中选中状态等IDE的当前状态信息,可以使用AnActionEvent.getData()方法。DataKeys类中定义了可以传递给此方法的不同数据键值;

1.获取方法名:

PsiElement psiElement = e.getData(PlatformDataKeys.PSI_ELEMENT);//鼠标所在的元素,这里就是方法
if (psiElement == null) {
   return;
}
String methodName = psiElement.toString().replace("PsiMethod:", "");//获取到方法名

2.获取方法所在的类名:

PsiElement psiElementParent = psiElement.getParent();//获取方法的父元素
if (psiElementParent == null) {
   return;
}
PsiFile containingFile = psiElementParent.getContainingFile();//获取到文件,这里是java类
String className = containingFile.getName();//获取到类名

3.到这里,我们已经获取到了类名,方法名,,那就可以确定对应的mybatis
mapper文件的id=“方法名”的sql位置;我的项目中命名比较有规律,所以对应mapper文件的名称可以这样确定:

String mapperName ;
if (className.endsWith("Service.java")) {
    mapperName = className.replace("Service.java", "Mapper.xml");
}
else if (className.endsWith("Dao.java")) {
    mapperName = className.replace("Dao.java", "Mapper.xml");
}
else {
    return;
}

当然,还可以通过mapper的命名空间找到;

4.打开xml

Project project = e.getProject();
//查找名称为mapperName的文件
PsiFile[] files = PsiShortNamesCache.getInstance(project).getFilesByName(mapperName);
if (files.length == 1) {
    XmlFile xmlFile = (XmlFile) files[0];
    String xml = xmlFile.getDocument().getText();//获取mapper xml字符串
    //判断mapper是否存id="methodName"的sql,存在就打开对应的mapper xml
    //这里判断比较简单,不严谨。可以通过XmlFile遍历节点判断是否存在
    if (StringUtil.isNotEmpty(xml) && xml.contains("id=\"" + methodName + "\"")) {
        toMapper(project, methodName, files[0].getVirtualFile(), xml);
    }
}

/**
 * 进入mapper
 * @param project
 * @param methodName
 * @param mapperFile
 * @param xml
 */
private void toMapper(Project project, String methodName, VirtualFile mapperFile, String xml) {
    //打开xml文件
    OpenFileDescriptor openFileDescriptor = new OpenFileDescriptor(project, mapperFile);
    Editor editor = FileEditorManager.getInstance(project).openTextEditor(openFileDescriptor, true);

    //获取sql所在的行数,这里用了比较笨的方法。api找了很久没找到有什么方法可以获取行号,希望有大神指点
    String[] split = xml.split("\n");
    int lineNumber = 0;
    for (int i = 0; i < split.length; i++) {
        String line = split[i];
        if (StringUtil.isNotEmpty(line) && line.contains(methodName)) {
            lineNumber = i;
            break;
        }
    }
    //定位到对应的sql
    CaretModel caretModel = editor.getCaretModel();
    LogicalPosition logicalPosition = caretModel.getLogicalPosition();
    logicalPosition.leanForward(true);
    LogicalPosition logical = new LogicalPosition(lineNumber, logicalPosition.column);
    caretModel.moveToLogicalPosition(logical);
    SelectionModel selectionModel = editor.getSelectionModel();
    selectionModel.selectLineAtCaret();
}

5.至此,代码完成,现在可以测试下了,点击右上角运行,会打开一个新的idea进行调试

图片 7

然后在新的idea中打开项目,把鼠标聚焦在你要找的方法中,然后快捷键Ctrl+Shift+X,跳到xml,这样就是成功了。

图片 8

图片 9

6.发布,生成jar文件,然后就可以安装到idea使用了

图片 10

 

最后:这里只是说明了大体逻辑,你还可以判断xml是否有这个sql,没有就自动创建一个tag等等,openapi有很多概念等等,大家可以自行百度或去官网查看文档。

下图是本人最近写的插件功能,只适用自己的项目,就不上代码了,更多有意思功能可以自己开发。

idea 插件开发–快速定位到mybatis
mapper文件中的sql,intellijmybatis intellij idea
提供了openApi,通过openApi我们可以自己开发插件,提高工作…

像Eclipse一样,idea这个公认最好的javaIDE也有Vim插件。

1,ctrl+f  当前页面查找

  相信很多小伙伴遇到过这种情况,在 idea 使用 mybatis
的情况下,用@Autowired
总是会提示错误,但是代码是可以运行的,而且一点问题也没有。

简介

    mybatis_plus主要的作用是自动导航,如下图

    图片 11

    点击箭头会跳转到对应的dao接口中,同样,dao接口中也有这样的箭头,点击之后会跳转到对应的sql映射语句处。

    还有一个功能就是检查mapper映射文件中是否有错误。比如对应的实体类/属性是否有拼写错误。

 

安装方法

2,ctrl+shift+f 全局查找

图片 12

 安装

    安装的话可以在idea中直接安装,如下图

    图片 13

    图片 14

    图片 15

     按照上图步骤操作完成后,重启一下idea即可。

    但是,这个插件要收费。下面介绍怎么安装破解版的。

File>Settings>Plugins>Install JetBrains plugin…

3,ctrl+r  替换当前页面

尝试着将 @Autowired 注解换成 @Resource

    点我下载jar包

     点击下载上面的文件并解压。

    图片 16

  然后找到刚才下载的jar包并点击  ok  即可。

 

 

以上就是安装mybatis_plus的两种方式

然后搜索vim(全称是IdeaVim)

4,ctrl+shift+r   替换整个项目中的单词

图片 17

然后搜索结果右键下载安装

5,ctrl+g  在当前页面中输入行数,定位到指定行

这样它就不会报错了,是不是有很多小伙伴和我一样被这个折磨了很久。

出现问题:

6,ctrl+shift+n 打开某一个文件。

可能是天朝的网络问题导致无法下载跟安装

 

另一种方法

在刚才搜索结果的页面

图片 18

单击红框圈住的网址下载

下载页面截图

图片 19

下载后的压缩包文件

图片 20

返回到前一个页面

单击红框圈住的按钮

图片 21

弹出菜单后找到你刚才下载的压缩包

然后单击OK就可以了。安装完成后会提示你重启idea

重启后提示你选择Keymap(至于这个我就不解释了)

默认开启/关闭Vim模拟器快捷键是Ctrl+Alt+v

你可以在Settings>Keymap中设置不同Kemap下启动Vim模拟器的快捷键(我设置为Ctrl+;)

图片 22

上一张成功后的图

图片 23

 

相关文章