# xz-utils
**Repository Path**: musekeji/xz-utils
## Basic Information
- **Project Name**: xz-utils
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-01-07
- **Last Updated**: 2026-09-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
XzUtils — MyBatis SQL 日志解析与开发实用工具集。
An IntelliJ IDEA plugin for MyBatis SQL log parsing, real-time SQL interception and code formatting.
- MyBatis SQL 日志解析:自动解析 MyBatis 执行日志,提取 SQL 语句并替换参数
- MyBatis Log Plus:通过 Java Agent + Socket 实时拦截执行 SQL,支持格式化/压缩/原始展示
- SQL 解析器:从日志文本中解析 SQL,支持参数替换与模板拼接
- 代码格式化:支持 JSON / Java / HTML / CSS 等常用格式化
# XZ-Utils
一个功能强大的 IntelliJ IDEA 插件,提供 MyBatis SQL 日志解析、代码格式化、SQL 解析等实用工具。
## 功能特性
### 🖥️ MyBatis SQL 日志解析
- 自动解析 MyBatis 执行日志,提取 SQL 语句和参数
- 支持格式化、压缩两种展示模式
- 可将日志保存到文件
- 支持自定义缩进和端口配置
### ⚡ MyBatis Log Plus (增强版)
- 通过 Java Agent 实时拦截 MyBatis SQL 执行
- Socket 通信实现实时数据传输
- 支持服务端和客户端模式
- 心跳检测和自动重连机制
- 格式化展示完整的执行 SQL
### 📝 代码格式化工具
- 支持多种文件类型格式化
- 内置 JSQL Parser 和自定义格式化引擎
- 独立的格式化工具窗口
### 🔧 SQL 解析器
- 从日志中自动解析 SQL 语句
- 支持参数替换和模板 SQL 拼接
- 自动识别 SQL 操作类型
### 🛠️ 实用工具
- **编辑器包装器**: 支持查看器和编辑模式的代码编辑器
- **控制台工具**: 带日志级别的控制台输出
- **端口检测**: 检测端口占用情况
- **MyBatis 检测**: 检测项目是否使用 MyBatis
## 快速开始
### 环境要求
- IntelliJ IDEA 2021.3 或更高版本
- JDK 11 或更高版本
- Gradle 7.6 或更高版本
### 安装方式
#### 方法一:源码编译
```bash
# 克隆项目
git clone https://gitee.com/xiazhi926459/xz-utils.git
# 编译插件
./gradlew buildPlugin
# 在 IntelliJ IDEA 中安装
# Preferences -> Plugins -> Install Plugin from Disk
```
#### 方法二:Java Agent 方式
```bash
# 启动应用时添加 JVM 参数
-javaagent:path/to/xz-mybatis-agent.jar=端口号
```
## 使用说明
### MyBatis Log 窗口
1. **打开工具窗口**: View -> Tool Windows -> XzUtils
2. **选择功能标签页**:
- **FormaterTab**: 代码格式化工具
- **SqlParserTab**: SQL 日志解析工具
- **MyBatisLogPlus**: 实时 SQL 监控
### MyBatis Log Plus 配置
1. **打开设置**: Preferences -> Tools -> MyBatis Log Plus
2. **配置选项**:
- SQL 展示样式 (格式化/压缩/原始)
- 缩进数量
- 日志文件保存路径
- 端口范围配置
- 格式化引擎选择
### Socket 通信
插件提供 Socket 端点实现:
```java
// 创建服务端
SocketConfig config = new SocketConfig(port);
SocketEndpoint server = SocketFactory.createServer(config);
server.start();
// 创建客户端
SocketEndpoint client = SocketFactory.createClient(config);
client.start();
```
### 代码格式化
```java
// 格式化 SQL
String formatted = MySqlFormatter.formatted(sql, FormatterEnum.SQL_FORMATTER);
// 压缩 SQL
String compressed = MySqlFormatter.compressed(sql);
```
## 项目结构
```
xz-utils/
├── src/main/java/com/xz/xzutils/
│ ├── XzUtilsWindowFactory.java # 工具窗口工厂
│ ├── actions/ # 动作类
│ ├── components/ # UI 组件
│ │ ├── console/ # 控制台工具
│ │ └── editor/ # 编辑器工具
│ ├── module/
│ │ ├── toolwindow/ # 工具窗口标签页
│ │ ├── xzmybatislog/ # MyBatis 日志解析
│ │ └── xzmybatislogplus/ # MyBatis 日志增强
│ ├── settings/ # 插件设置
│ └── utils/ # 工具类
├── xz-mybatis-agent/ # Java Agent
│ └── src/main/java/com/xz/xzmybatisagent/
│ ├── MySqlLogInterceptor.java # SQL 拦截器
│ └── socket/ # Socket 通信
└── src/main/resources/
└── META-INF/plugin.xml # 插件配置
```
## 主要模块
### SqlParserTab
SQL 日志解析标签页,提供:
- 日志输入编辑器
- SQL 解析按钮
- 解析结果查看器
- 一键复制功能
### SqlConsole
自定义控制台实现,提供:
- 多级别日志输出 (DEBUG, INFO, WARN, ERROR)
- 不同内容的样式区分
- 超链接支持
### MyBatis Log Manager
MyBatis 日志管理器,负责:
- 日志行解析
- SQL 状态跟踪
- 控制台输出
### MyBatis Agent
Java Agent 组件,提供:
- 运行时 SQL 拦截
- 参数值替换
- 执行时间统计
- Socket 数据发送
## 技术栈
- **开发框架**: IntelliJ Platform SDK
- **构建工具**: Gradle + Kotlin DSL
- **SQL 解析**: JSQL Parser
- **通信协议**: TCP Socket
- **日志框架**: SLF4J
## 许可证
本项目采用 MIT 许可证。
## 贡献指南
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
## 更新日志
查看 [CHANGELOG.md](./CHANGELOG.md) 了解版本更新历史。
## 联系方式
- 项目地址: https://gitee.com/xiazhi926459/xz-utils
- 问题反馈: https://gitee.com/xiazhi926459/xz-utils/issues