sql 占位符替换 TUI 工具

82 阅读2分钟

CRUD Boy 经常需要在开发环境服务器排查 sql 日志,但 sql 日志会把带占位符的原始 sql 和 value 分开打印,为了执行 sql,需要手动将 value 挨个替换到占位符中,虽然常见编辑器有多光标功能可以帮助快速完成,但感觉还是略显繁琐。为此写了一个非常简易的 TUI 工具:

demo.png

工具分为三个区域:

  • 左侧区域用于输入带有 ? 占位符的 sql
  • 右侧区域用于输入带有类型的 Value
  • 下方区域用于显示结果,并自动将结果放入系统剪贴板,直接 command+v/ctrl+v 粘贴即可

sql 和 value 可以手动粘贴或输入,也可以直接复制服务器日志,程序会自动抽取出 sql 和 value 并分别放入左侧区域和右侧区域,例如有日下服务器 sql 日志:

iov-test-65759f684-pzpws iov-test 2025-06-28 20:18:06 --- [685fdd7ed0e3ea524bf29a38a05b72dc,0070d58fe48dd8f9] DEBUG 6 --- [  XNIO-1 task-6] c.a.model.test.yourbatis.Executor        : ==>  Preparing: SELECT * FROM user WHERE id = ? AND deleted = 0 and sex = ?;
iov-test-65759f684-pzpws iov-test 2025-06-28 20:18:06 --- [685fdd7ed0e3ea524bf29a38a05b72dc,0070d58fe48dd8f9] DEBUG 6 --- [  XNIO-1 task-6] c.a.model.test.yourbatis.Executor        : ==> Parameters: 1(Long), male(String)
iov-test-65759f684-pzpws iov-test 2025-06-28 20:18:06 --- [685fdd7ed0e3ea524bf29a38a05b72dc,0070d58fe48dd8f9] DEBUG 6 --- [  XNIO-1 task-6] c.a.model.test.business.Test    : ==> Update user info.
iov-test-65759f684-pzpws iov-test 2025-06-28 20:18:06 --- [685fdd7ed0e3ea524bf29a38a05b72dc,0070d58fe48dd8f9] DEBUG 6 --- [  XNIO-1 task-6] c.a.model.test.yourbatis.Executor        : ==>  Preparing: UPDATE user SET name = ?, age = ?, update_time = ?, id_card = ? WHERE id = ? AND deleted = ?;
iov-test-65759f684-pzpws iov-test 2025-06-28 20:18:06 --- [685fdd7ed0e3ea524bf29a38a05b72dc,0070d58fe48dd8f9] DEBUG 6 --- [  XNIO-1 task-6] c.a.model.test.yourbatis.Executor        : ==> Parameters: zhangsan(String), 18(Integer), 2025-06-13 16:44:56.499(Timestamp), 123456789(Long), 1(Integer), 0(Integer)

复制后,程序会自动读取剪贴板内容完成解析

快捷键

Tab 或鼠标点击可以切换区域,当切换到下方区域时,开始执行占位符替换

源码