idea使用技巧
文章目录
分层结构
Config:所有的配置。用于存放Spring Boot相关的配置类,包括启动类。
Controller:请求入口。所有请求的入口,前后端交互的入口。
Service:逻辑层。负责所有的业务逻辑。
Mapper:持久层。或叫Dao,负责Java和数据库交互。包括interface和xml两类文件。
Domain(Po):表映射实体。用一个Java类来映射数据库表,类名就相当于表名,类的属性就相当于表的字段。
Dto:数据传输对象(Data Transfer Object),用于前后端数据交互。
Domain和Dto的区别
Domain类的属性完全和表的字段一致;Dto类的属性一般和表一致,但会根据不同的业务场景适当增加、减少属性。
Domain类用于Java数据和数据库表记录的映射;用在Service层和Mapper层。
Dtoy类用于前后端数据传输;用在Conteoller层和Service层。
Service层介于Controller和Mapper直接按,也是Domain和Dto的转换层。
高效的代码编辑技能
复制一行:光标放任意位置,ctrl+c 复制历史:ctrl+shift+v,双击记录后,可在当前光标处粘贴
普通粘贴后,会自动格式化:ctrl+v
简单粘贴,不会格式化,但是会保留空格:ctrl+alt+shift+v
alt+鼠标左键并拖动:纵向选择多行文本
ctrl+alt+l:格式化代码
剪切光标所在行,并删除改行:ctrl+x
复制多行:ctrl+d
快速移动某行:Alt+shift+上/下
shift+上/下:选中上下对应的行数,然后再进行:Alt+shift+上/下移动
快速跳转
行内跳转和选中:
Home键跳到行首,End键跳到行尾
ctrl+左/右:跳过一个词
ctrl+shift+左/右:选中一个词
根据行号定位:
Ctrl+G:跳到指定行
tabs快速切换:
alt+左/右:左/右切换Tabs
查看浏览过的文件:
ctrl+e:查看浏览过的文件列表
快速查找和替换
1,ctrl+f:当前文件查找
ctrl+r:当前文件替换
ctrl+shift+f:全局查找
ctrl+shift+r:全局替换
2,查找文件:Ctrl+Shif+N(按文件名字查找),再比如自己设置的就是双击Shift
3,查找操作和菜单:Ctrl+Shift+A(查找所有的菜单或操作)
4,万能查找:两次shift, 仅限文件东西,文件内的东西不能查找
万能快捷键
Alt+Enter( 智能辅助提示。给出的提示与当前光标所在位置有关系)
1,见到红色报错就按
2,见到波浪线警告就按
3,没有报错没有警告也可以按
键盘鼠标的配合
1、纵向选择:按住alt不放,鼠标点击拖动
2、选中一大段代码
鼠标点击开始的位置
找到尾行的位置
按住shift+鼠标点击结尾位置
3、快速移动/复制代码
纯键盘移动多行:
按住shift+上/下选中多行
按住shift+alt+上/下移动多行
(不适合移动的行数过多,移动的距离过远,或者跨文件移动)
键盘鼠标配合
鼠标点击开始的位置、找到尾行的位置、按住shift+鼠标点击结尾位置
光标定位到目标位置的上一行结尾
ctrl+v粘贴
4、类或方法的跳转
进入:按住ctrl+鼠标左键,进入方法
跳回:ctrl+alt+方向键左
调试项目
1、基本断点调试功能
启动debug
在编辑区左边空白位置点一下,就加了一个断点
通过浏览器访问地址后,页面出不来,打了断点的那一行显示深蓝色,表示程序走到这里暂停了,没有继续往下执行
此时就可以看到这些变量里面的值这一排又是啥意思呢?
Step Over(F8):执行到当前方法的下一句
Step Into(F7):进入当前行调用的方法体里,可以进到第三方jar包(再执行下F8就会跳回来)
Force Step Into(alt+shift+F7):可以进到第三方jar包方法里面或jdk自带的方法里面
Step out(shift+F8):执行完当前的方法
Run to Cursor(alt+F9):运行到光标所在处
当你不想继续调试时,按下这个三角形就表示跳到下一个断点,如果没有断点则表示程序会一直运行完
2、断点管理
在实际调试时,可能会加了很多个断点,为了方便管理,这里有这么个菜单:
快捷键:ctrl+shift+f8
弹出如下窗口,在这里你就可以管理你的那些断点了
还有一种情况,如果加了很多断点,但这次调试时不需要用到它,但也不想删掉,
这时就可以鼠标移到那个断点上,右击,去掉Enabled。
也可以在断点管理里面把勾去掉,效果是一样的
还有一种情况,我调试完了,但是之前打的断点太多,一个个取消掉太费时间,这时候就可以点下这个:
再点一下,断点即可恢复
3、条件断点
假设有这么个循环,现在里面某个值出了问题,需要针对它进行断点调试
因为是针对循环里面的,所以断点要在这个位置,这样变量i才有值
接着对着这个断点右击,弹出如下框
在这个位置,设下条件,例如:i == 2,当循环遍历到i为2时,就会触发断点
(框里面填的是java代码)
此时该断点多了一个问号,表明是条件断点
另一种情况就是不知道是第几行出了问题,但知道user为test1这个用户才出错时,可以这样:
(一定是要在定义user的下一行加入断点,否则取不到值)
4、异常断点
有一个for循环,当循环到某一行时,就出现异常,但你又不知道是哪行,也不知道那一行的属性值是多少,这时候就要用异常断点
先确定是什么异常(如NullPointerException)
来到断点管理这里
点击加号后,选择下面这个
在弹出的框里面,填入NullPointerException
此时就会多一个打了勾的异常断点
这个断点不用你去点,在程序运行时,只要哪里出现这个异常,它就会自动打上断点
5、添加变量监控
idea中,断点的变量值都会在右边展示
同时下面也能看到
还可以自己添加变量,进行观察
加完回车
这时候就会把值打印出来
代码生成
代码生成Generate
1、生成set/get
alt+insert,或者右键——》Generate
这时会提示要生成哪个,可以ctrl+a全选
这样就生成了set/get
2、生成构造函数
光标在任意位置按下alt+insert,弹出如下
弹出的框里面,选择构造方法的参数,ctrl+a就是全选
3、生成toString
把光标放在要生成的地方
之后按alt+insert,选择如图
在弹出的框里面,链接方式默认是+号
这里选择StringBuffer方式,性能比+号好
4、生成hashCode和equals
alt+insert,选择如图
选择要参与equals的字段,默认全选
这时候就会自动生成equals和hashCode
重构代码
重命名快捷键:Shift+F6
用法一:重命名局部变量
用法二:重命名方法,所有调用到的地方会同步修改。(回车后会弹出当前操作会影响到的地方。若不需要修改的地方,右键-exclude,排除当前行,如果某个包下都不想改,可以在包上右键-exclude,统一排除)
用法三:重命名类名
撤销:Ctrl+Z
抽取方法:选中要抽取成一个方法的代码->右键Refactor->Extract抽取->Method方法->弹出Extract Method->修改成自己想要的属性
原则:一个方法只负责一个功能
生成变量
自动生成返回值:Ctrl+Alt+V
代码模板
psvm:生成主函数
sout:System.out.println();
fori:for循环
fore:foreach循环
Live Templates 可以自定义
自定义live template
在设置菜单->搜live T自行添加->点击绿色的“+”创建组2.Template Group->选中包再带你再添加模板1.live Template
注意:
图中“logf”可以自定义,和现有的重复也不要紧,在使用的时候,可以看描述选中自己的logf。
描述里尽量不要和现有的重复,否则在使用时会迷茫。
变量用"$ $"包含,变量名“CLASSNAME”可以自己定义。
添加变量后点击右方Edit variables,弹框中expression是内置的方法列表
postfix:先打变量或表达式,再打.快捷键 不能自定义
例如user.null就是if(user ==null){}
userlist.fori就是for(int i=0;i<userlist.size();i++){}
i1.if就是 if(i1){}
user.sout就是system.out.println(user);
常用窗口
project窗口:比较好用的选项有,Packages显示包,Problems显示报错文件,Changed Files有修改过的文件
structure窗口:快速查看类中的方法和属性,熟悉代码的时候打开用上
tudo窗口:可以理解为待办事项
用法:添加注释,在注释中写todo,如“// todo 调用service方法”,就能在todo界面看到待办事项。(在任务开发完后,把注释里的“todo”删除,任务就会从“TODO”窗口自动删除)
favorites窗口:相当于收藏夹,可将文件直接拖动加入收藏夹中的分组
用法一,将项目中的一些独立的文件加入收藏夹,如pom.xml,application.propertis等。
用法二,把当前正在开发的几个文件加入某个分组,方便开发时查找,开发完在删除分组。
termimal窗口:默认是用了系统的cmd窗口,可以运行cmd窗口的命令。一般该窗口是配合git使用(需要修改使用git的bash.exe,在设置菜单搜terminal,然后在Shell path中选择Git\bin\bash.exe)
更多使用技巧
查看方法调用情况ctrl+alt+H
看图,怎样同时选中aa/bbb/cccc/ddddd字符串然后修改
1.先ctrl+shift+alt+J 选中前面的相同的字符串,再右键移动到"后,再用 ctrl+shift+右 选中一个词修改
\t\t可以将地址变成链接
git操作
需要先安装git for windows,git客户端工具。
平时开发中,git的使用都是用可视化界面。git命令需要不是复习,以备不时之需。
蓝色文件:这次修改过,但还没有提交代码
绿色文件:修增的文件
黑色文件:这次代码没有修改过。
集成git方法:在设置界面,找到Git,然后在Path to Git executable中添加系统中\Git\bin\git.exe
集成完git后,项目文件夹会出现.git的隐藏文件夹。
git提交:Ctrl+K
小提示:每个人开发环境的配置不一样,本地开发环境相关的文件不要提交。包括build,target,class等编译后生成的文件夹和文件。(如.iml后缀,.idea文件夹)
自动识别不需提交到git的文件,需要将.gitignore文件放到工程根目录。
revert,要取消某个文件的修改,回到修改前的版本,在local Changes页面,文件右键,选择revert
在Git上建议新建项目的时候,README文件和.gitignore文件都不要,这样会得到一组初始化命令。
git初始化,将项目交给git来管理
将代码交给git来管理,相当于git add:操作如图
点击commit相当于git commit:提交刚才git add的文件,到git本地仓库。
一般提交需要将图中右方的Perform code analysis和Check TODO(Show ALL)打勾。
git remote add:关联远程仓库,origin是默认远程仓库名称。可关联多个远程仓库。
git push:将本地仓库中(已执行git commit)的代码提交到远程仓库
在github可以修改/新增文件,github实际上帮你执行了git add,git commit,git push等命令
拉取远程仓库代码到本地,相当于git pull:Ctrl+T
补充:当本地没有代码,要从远程仓库拉取时,可以用git clone
追加上一次提交:在commit Changes界面的Amend commit打勾,如图。
如果通过ssl授权就不用每次都输入密码了
SSH Key方法:
在工程目录上右键点击Git GUI Here
在弹出的Git Gui界面上点击Help
Show SSH Key->点Generate生成密钥(弹框什么都不输直接OK )
点Copy To Clipboard复制
打开gitHub网页,点击右上方头像下的Settings
点击SSH and GPG keys
点New SSH key,将复制好的Key粘贴进去
点Add SSH key即可
mybatis插件
用于代码跟踪
在Plugins插件安装界面,搜free mybatis plugin,点Install安装
常见面试题:maven出现jar包冲突,怎么解决?
答:点击界面右方的Maven Projects,点击Show Dependencies的图标打开依赖树,将出现红线且确定不需要的jar,右键Exclude,点Import Changes即可。
maven出现jar包冲突如何解决?
首先打开pom检查依赖关系,通过依赖图查看jar包冲突位置,找到起冲突的jar,不需要的jar
将其exclusion排除掉,保留适用的版本
总结
ctrl+左/右
ctrl+shift+左/右
ctrl+G
alt+左/右
ctrl+E
ctrl+shift+A:查找菜单操作
按两次shift:万能查找
万能快捷键alt+enter
见红色报错就按
见警告波浪线
没报错没警告也可以按
ctrl+鼠标左键:跳转
ctrl+alt+键盘左键:返回刚才跳转的位置
alt+insert:代码生成器
ctrl+alt+v:自动生成返回值
第1组:通用型
说明 快捷键
复制代码-copy ctrl + c
粘贴-paste ctrl + v
剪切-cut ctrl + x
撤销-undo ctrl + z
反撤销-redo ctrl + shift + z
保存-save all ctrl + s
全选-select all ctrl + a
第2组:提高编写速度(上)
说明 快捷键
智能提示-edit alt + enter
提示代码模板-insert live template ctrl+j
使用xx块环绕-surround with … ctrl+alt+t
调出生成getter/setter/构造器等结构-generate … alt+insert
自动生成返回值变量-introduce variable … ctrl+alt+v
复制指定行的代码-duplicate line or selection ctrl+d
删除指定行的代码-delete line ctrl+y
切换到下一行代码空位-start new line shift + enter
切换到上一行代码空位-start new line before current ctrl +alt+ enter
向上移动代码-move statement up ctrl+shift+↑
向下移动代码-move statement down ctrl+shift+↓
向上移动一行-move line up alt+shift+↑
向下移动一行-move line down alt+shift+↓
方法的形参列表提醒-parameter info ctrl+p
第3组:提高编写速度(下)
说明 快捷键
批量修改指定的变量名、方法名、类名等-rename shift+f6
抽取代码重构方法-extract method … ctrl+alt+m
重写父类的方法-override methods … ctrl+o
实现接口的方法-implements methods … ctrl+i
选中的结构的大小写的切换-toggle case ctrl+shift+u
批量导包-optimize imports ctrl+alt+o
第4组:类结构、查找和查看源码
说明 快捷键
如何查看源码-go to class… ctrl + 选中指定的结构 或 ctrl+n
显示当前类结构,支持搜索指定的方法、属性等-file structure ctrl+f12
退回到前一个编辑的页面-back ctrl+alt+←
进入到下一个编辑的页面-forward ctrl+alt+→
打开的类文件之间切换-select previous/next tab alt+←/→
光标选中指定的类,查看继承树结构-Type Hierarchy ctrl+h
查看方法文档-quick documentation ctrl+q
类的UML关系图-show uml popup ctrl+alt+u
定位某行-go to line/column ctrl+g
回溯变量或方法的来源-go to implementation(s) ctrl+alt+b
折叠方法实现-collapse all ctrl+shift+ -
展开方法实现-expand all ctrl+shift+ +
第5组:查找、替换与关闭
说明 快捷键
查找指定的结构 ctrl+f
查找与替换-replace ctrl+r
直接定位到当前行的首位-move caret to line start home
直接定位到当前行的末位 -move caret to line end end
全项目搜索文本-find in path … ctrl+shift+f
第6组:调整格式
说明 快捷键
格式化代码-reformat code ctrl+alt+l
使用单行注释-comment with line comment ctrl + /
使用/取消多行注释-comment with block comment ctrl + shift + /
选中数行,整体往后移动-tab tab
选中数行,整体往前移动-prev tab shift + tab