Как записать SQL-запрос, сгенерированный за сценой из querydsl, используя mysemma

Любой оптимальный способ показать SQL-запросы, которые генерируются автоматически при использовании querydsl из mysemma, так что эти SQL-запросы могут быть легко просмотрены, и отладка SQL-запроса становится легкой при работе с querydsl.

Например: from(qCustomer).where(qCustomer.custId.eq("1"));

Мне нужно знать sql, сгенерированный за кулисами, и войти в систему, чтобы я мог легко отлаживать свои приложения.

4 ответа

Весенние пользователи загрузки, добавьте ниже к application.properties или эквивалентный файл yaml для включения журналов QueryDsl.

logging.level.com.querydsl.sql=DEBUG

Ссылка - logQuery () в AbstractSQLQuery

Пожалуйста, добавьте следующую настройку в ваш файл application.properties и проверьте.

spring.jpa.show-SQL = верно

Я вижу сгенерированный SQL с использованием вышеуказанных настроек. К вашему сведению, я использую Spring Data JPA и QueryDSL 4.1.3

Для тех, кто хочет сделать это в коде,

      String theSqlStr = theDslQuery.getSQL().getSQL();

вы получите сгенерированный sql

Пример:

       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>
Другие вопросы по тегам