认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL

2023-11-07

一、条件断点

循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置

二、回到"上一步" 

该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。

参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了

回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 :)

注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。

三、多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图:

如果想希望下一个断点位置是第2句诗句,可能要失望了:

如果想让线程在调试时,想按自己的愿意来,让它停在哪个线程就停在哪个线程,可以在图中3个断点的小红点上右击,

即:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后,再来一发试试

注意上图中的红框位置,断点停下来时,这个下拉框可以看到各个线程(注:给线程起个容易识别的名字是个好习惯!),我们可以选择线程“天空中的飞鸟”

断点如愿停在了第2句诗。

四、远程调试

这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下:

1、项目启动时,先允许远程调试

 java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}

起作用的就是

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081

注意:远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面

2、idea中设置远程调试

然后就可以调试了

前提是本机有项目的源代码 ,在需要的地方打个断点,然后访问一个远程的url试试,断点就会停下来。

五、临时执行表达式/修改变量的运行值

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

点击+号后,就可以在新出现的输入框里输入表达式,比如i+5

然后回车,马上就能看到结果 

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

善用上述调试技巧,相当大家撸起代码来会更有感觉。

链接:https://dwz.cn/zMaNp9Kf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL 的相关文章

  • NetBeans 代码模板 ${date}?

    我在 Eclipse 中有这个代码模板 自 日期 起 当输入时我得到这样的东西 自2009年8月4日起 但是当我添加相同的模板时 自 日期 起 到 NetBeans 它输出 自日期以来 有人可以帮忙吗 还没有答案吗 这在 Netbeans
  • 将 Web 应用程序从 Eclipse 部署到 JBoss,并具有依赖项

    我有一个在 Eclipse 下开发的项目 安装了 JBoss 工具 当我将应用程序部署到 Jboss 服务器时 一些通过 Maven 提供给项目的帮助程序 jar 文件不会复制到 WEB INF lib 文件夹中 因此 我得到一个Class
  • 打印 OSGI 包类路径?

    在普通的 java 应用程序中 可以使用以下命令打印类路径的内容 String ss System getProperty java class path System out println ss 但是如何打印使用 eclipse PDE
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如何更改 Eclipse 窗口标题?

    如何更改正在运行的 Eclipse 的标题 最后一部分 我说的是 Eclipse 发行版本身 而不是我为 Eclipse 编写的程序 目前我有以下头衔 1这部分设置在Window gt Preferences gt General gt W
  • 在 Eclipse 中跨文件搜索注释掉的代码

    有没有一种快速方法可以在 Eclipse 中查找 Java 文件中所有注释掉的代码 也许是搜索中的任何选项 或者任何可以执行此操作的附加组件 它应该只能找到被注释掉的代码 而不是普通的注释 在 Eclipse 中 我只是在打开正则表达式复选
  • Log4j 未使用属性文件找到自定义附加程序

    我正在尝试使用以下 XML 属性文件在 Eclipse 插件项目中配置 log4j 其中包括一个名为 EclipseLoggingAppender 的自定义附加程序
  • 使用 eclipse 配置mockito 时出现问题。给出错误:java.lang.verifyError

    当我将我的mockito库添加到类路径中 并使用一个简单的mockito示例进行测试时 我尝试使用模拟对象为函数add返回错误的值 我得到java lang verifyerror 以下是用于测试的代码 后面是 logcat Test pu
  • Eclipse 正则表达式搜索/替换在正则表达式积极前瞻后不替换?

    在 eclipse 3 5 中进行积极的前瞻后 我无法进行任何类型的替换 具体来说 我放入any文本字符串来替换找到的字符串 并且文本字符串无法被替换 我的正向先行位于该行的末尾 以便在下一次搜索中包含正向先行文本 这是怎么回事 这也是最新
  • GWT 导致 Eclipse 无法在 Windows XP 上启动

    单击 eclipse 会显示启动屏幕 然后应用程序将被静默终止 并且不会出现任何错误消息 log 文件包含以下信息 汇总 ENTRY org eclipse ui 4 4 2012 11 09 11 33 45 323 MESSAGE Cl
  • Android 错误:设备驱动程序 API 匹配

    我应该关注错误消息 设备驱动程序 API 匹配 和以下 3 行 请参阅下面的代码 吗 这是什么意思 如何修复它 我只是按照 Android 开发人员培训 我的第一个应用程序 运行由 ADT Eclipse 新 gt Android 应用程序
  • Eclipse DLTK:将向导添加到 ScriptExplorerPart 的“新建”菜单

    我正在尝试将向导条目添加到ScriptExplorerPartEclipse 的动态语言工具包 这些向导可以从File gt New gt Other 所以至少我知道它们有效 它们是使用扩展点添加的org eclipse ui newWiz
  • Eclipse Indigo 中 Maven 的依赖关系层次结构视图

    似乎无法使用最新版本的 eclipse Indigo SR2 获取依赖关系层次结构视图 这post https stackoverflow com questions 6475927 maven pom editor dependency
  • 在 Eclipse 中从 C++ 调用 Ada

    我正在尝试创建一个完全托管在 Eclipse 中 以 C 启动并调用 Ada 的程序 我已经加载了 GNATBench 并且可以毫无问题地运行 Ada 程序 我不能做的是让 C 项目调用 Ada 项目 经过一番搜寻 我找到并使用 make
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题
  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • 如何停止 Eclipse 重建工作区?

    我的工作区有近 70 个项目 有时 Eclipse 开始重建工作区 但我没有做任何修改 重建需要近2小时 如何停止它并让 Eclipse 仅重建进行了修改的项目 谢谢 在菜单中 Project gt Build Automatically
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我

随机推荐

  • ChatGPT充值,银行卡被拒绝,图文教程

    目录 前言 步骤 1 魔法地址选择 2 选择手机号码 归属地 3 勾选 服从协议 4 填写信息 5 完善账单地址 6 订阅成功 前言 大家好 今天我在订阅ChatGPT4时 遭遇了银行卡被拒绝的尴尬境地 这里有个技巧 助你开心畅享ChatG
  • 大数据和人工智能的关系,超全解析

    大数据拥抱云计算 在PaaS层中一个复杂的通用应用就是大数据平台 大数据是如何一步一步融入云计算的呢 1数据不大也包含智慧 一开始这个大数据并不大 原来才有多少数据 现在大家都去看电子书 上网看新闻了 在我们80后小时候 信息量没有那么大
  • 使用C++封装MySQL API的教程(Python)

    在本教程中 我们将学习如何使用C 封装MySQL的API 并使用Python作为示例 我们将创建一个简单的程序 通过C 封装的MySQL API连接到MySQL数据库 并执行一些基本的数据库操作 MySQL是一个流行的开源关系型数据库管理系
  • ESP32(MicroPython)LVGL图形界面 RGB灯闪烁控制器

    ESP32 MicroPython RGB灯闪烁控制器 本程序通过依次调整RGB灯中每个灯的P 频率和占空比实现对RGB灯闪烁的控制 import lvgl as lv import time from espidf import VSPI
  • 【Shell牛客刷题系列】SHELL10 第二列是否有重复:复习sort命令和uniq命令~

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 本文主要涉及的命令是sort命令和uniq命令 这
  • Python_inspect的使用

    The inspect module provides several useful functions to help get information about live objects such as modules classes
  • Kafka基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 消息队列 作用 优点 异步处理 使用微信 进行建行卡支付时 如果没资
  • 每日一题分享(三)

    给你一个含 n 个整数的数组 nums 其中 nums i 在区间 1 n 内 请你找出所有在 1 n 范围内但没有出现在 nums 中的数字 并以数组的形式返回结果 分析 第一种思路 1 我们可以新定义一个数组 里面放的就是1到n的数 2
  • (二十一)QT的构造函数重载

    在实际开发中 我们可能遇到一个问题 对于一个类 我们可能需要传递给它不同的参数 让它执行不同的行为 或者在使用旧的类时 我们希望加上一个新的参数 但是这个参数在旧的逻辑中不使用 需要在新的逻辑中使用 如果我们改了这个类 会导致使用旧的类的函
  • 打造高质量视频,创造视觉奇观!Camtasia 2023为你升级!

    嘿 伙计 在这个全新版本中 我们迎来了焕然一新的动画控制和更简化的特效制作流程 让创作变得更高效 不仅如此 全新的背景去除和动画光标功能也让视频拥有全新的视觉体验 让我们先谈谈光标 这个细节或许被忽视 却能让您的录屏更显个性 Camtasi
  • OSI七层网络结构图与TCP/IP五层网络结构图

    一 OSI七层网络结构图与TCP IP五层网络结构图 又称 OSI七层网络模型与TCP IP四层网络模型 1 OSI七层模型 OSI中的层 功能 TCP IP协议族 应用层 文件传输 电子邮件 文件服务 虚拟终端 TFTP HTTP SNM
  • storm计数器(小白看懂系列)

    现在要用storm做一个计数器 我的方案是 不断地输入一串字符串 然后统计每个单词的频数 这篇博客从以下几个方面进行阐述 基本配置 流程分析与类的确定 奉上代码 含注释 一 基本配置 这里注意 导包的时候要注意 否则可能会出现神奇的强制类型
  • websocket 接口如何测试?

    什么是 websocket 接口 使用 websocket 建立长连接 服务端和客户端可以互相通信 服务端只要有数据更新 就可以主动推给客户端 WebSocket 使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据
  • 【深度学习】5:CNN卷积神经网络原理

    前言 先坦白的说 深度神经网络的学习在一开始对我造成的困扰还是很大的 我也是通过不断地看相关的视频资料 文献讲解尝试去理解记忆 毕竟这些内容大多都是不可查的 我们看到的都只是输入输出的东西 里面的内部运作以及工作原理 都需要沉心静思 这篇C
  • Python 远程控制Linux

    导入paramiko库 pip install paramiko import paramiko 创建SSHClient实例对象 ssh paramiko SSHClient 调用方法 表示没有存储远程机器的公钥 允许访问 ssh set
  • 使用flex布局 子元素高度自适应填满空白問題

    之前没用flex布局过高度自适应 倒腾了一下终于成功 但是还有个bug 必须要给父元素高度 不给高度就实现不了 来看下具体代码 由于子元素的图片大小不一样 要实现填满空白 要使用flex direction column 如果高度設置為he
  • 任意遥控器遥控C1测试成功,理论上可使用任意遥控

    转自 http bbs letv com thread 35538 1 1 html http bbs letv com thread 65155 1 1 html 任意遥控器遥控C1测试成功 理论上可使用任意遥控 现在测试了乐视随机九键遥
  • 源码安装openldap2.3以前版本

    http icephoenix us linuxunix build openldap 2 3 x from sources on ubuntu It happened so that I needed to build a particu
  • 全链路自动化测试

    背景 从 SOA 架构到现在大行其道的微服务架构 系统越拆越小 整体架构的复杂度也是直线上升 我们一直老生常谈的微服务架构下的技术难点及解决方案也日渐成熟 包括典型的数据一致性 系统调用带来的一致性问题 还是跨节点跨机房复制带来的一致性问题
  • 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL

    一 条件断点 循环中经常用到这个技巧 比如 遍历1个大List的过程中 想让断点停在某个特定值 参考上图 在断点的位置 右击断点旁边的小红点 会出来一个界面 在Condition这里填入断点条件即可 这样调试时 就会自动停在i 10的位置