认真看看, 以后写 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 的相关文章

随机推荐

  • 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的位置