当前位置:首页 > Java

java如何查看sql

2026-03-22 22:11:00Java

查看 SQL 语句的方法

使用日志框架打印 SQL

启用 Hibernate 或 MyBatis 的 SQL 日志功能,可以在控制台查看执行的 SQL 语句。

Hibernate(JPA)配置
application.propertiesapplication.yml 中设置:

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

MyBatis 配置
application.propertiesmybatis-config.xml 中启用日志:

logging.level.你的Mapper包路径=DEBUG

使用数据库代理工具

数据库代理工具(如 P6Spy)可以拦截 JDBC 调用并打印 SQL:

添加 P6Spy 依赖

<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>

配置 spy.properties
resources 目录下创建 spy.properties,配置:

module.log=com.p6spy.engine.logging.P6LogFactory
appender=com.p6spy.engine.spy.appender.Slf4JLogger
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=%(currentTime) | %(executionTime) | %(category) | connection %(connectionId) | %(sqlSingleLine)

使用数据库监控工具

数据库管理工具(如 MySQL Workbench、DBeaver)提供查询日志功能,可以查看执行的 SQL。

MySQL 查询日志
在 MySQL 配置文件中启用:

general_log = 1
general_log_file = /var/log/mysql/mysql.log

使用代码动态获取 SQL

某些框架(如 JPA Criteria API)支持获取生成的 SQL:

JPA Criteria API 示例

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Entity> query = cb.createQuery(Entity.class);
Root<Entity> root = query.from(Entity.class);
query.select(root).where(cb.equal(root.get("id"), 1));

String sql = entityManager.createQuery(query).unwrap(org.hibernate.query.Query.class).getQueryString();
System.out.println(sql);

MyBatis 拦截器
通过自定义拦截器获取 SQL:

java如何查看sql

@Intercepts({
    @Signature(type= StatementHandler.class, method="query", args={Statement.class, ResultHandler.class})
})
public class SqlInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        StatementHandler handler = (StatementHandler) invocation.getTarget();
        BoundSql boundSql = handler.getBoundSql();
        System.out.println("SQL: " + boundSql.getSql());
        return invocation.proceed();
    }
}

以上方法可根据具体框架和需求选择,以便在开发或调试阶段查看 SQL 语句。

标签: javasql
分享给朋友:

相关文章

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

java如何调试

java如何调试

调试Java程序的基本方法 使用IDE内置的调试工具(如IntelliJ IDEA或Eclipse)是最常见的方式。在代码行号旁点击设置断点,启动调试模式后,程序会在断点处暂停,允许查看变量值、调用栈…