6

显示使用 mysemma 的 querydsl 时自动生成的 sql 查询的任何最佳方式,以便可以轻松查看这些 sql 查询,并且在使用 querydsl 时可以轻松调试 sql 查询。

例如:from(qCustomer).where(qCustomer.custId.eq("1"));

我需要知道幕后生成的 sql 并且想要记录,以便我可以轻松地调试我的应用程序。

4

3 回答 3

10

Spring boot 用户,在下面添加application.properties或等效的 yaml 文件以启用 QueryDsl 日志。

logging.level.com.querydsl.sql=DEBUG

参考 - AbstractSQLQuery 的 logQuery()

于 2018-04-20T06:56:13.433 回答
4

请在您的 application.properties 文件中添加以下设置并检查。

spring.jpa.show-sql=true

我看到使用上述设置生成的 SQL。仅供参考,我正在使用 Spring Data JPA 和 QueryDSL 4.1.3

于 2017-01-05T05:31:33.257 回答
0

例子:

 SQLQuery<String> sqlQuery = factory
        .select(stringTemplate)
        .from("table")
        .where(areaIdPath.eq(13L));

  sqlQuery.setUseLiterals(true);

  String sql = sqlQuery.getSQL().getSQL();

设置UseLiterals = true,然后 getSQL() 将生成具有参数的 sql。

  Set whether literals are used in SQL strings instead of parameter bindings (default: false)
 
  <p>Warning: When literals are used, prepared statement won't have any parameter bindings
  and also batch statements will only be simulated, but not executed as actual batch statements.</p>
于 2022-02-25T11:58:49.677 回答