Наблюдение базового SQL в Spring JdbcTemplate?

Я узнаю о чудесах JdbcTemplate и NamedParameterJdbcTemplate. Мне нравится то, что я вижу, но есть ли какой-либо простой способ видеть базовый SQL, который он заканчивает тем, что выполнил? Я хотел бы видеть это в целях отладки (чтобы, например, отладить получающийся SQL во внешнем инструменте).

55
задан Artem 18 December 2009 в 20:49
поделиться

2 ответа

В документации Spring говорится, что они регистрируются на уровне DEBUG:

Весь SQL, выданный этим классом, регистрируется на уровне DEBUG ниже категория , соответствующая полному имени класса экземпляра шаблона (обычно JdbcTemplate, но он может быть другим, если вы используете настраиваемый подкласс класса JdbcTemplate).

В терминах XML вам нужно настроить регистратор примерно так:

<category name="org.springframework.jdbc.core.JdbcTemplate">
    <priority value="debug" />
</category>

Однако эта тема обсуждалась здесь месяц назад, и кажется не так легко заставить работать, как в Hibernate, и / или он не возвращает ожидаемую информацию: Spring JDBC не регистрирует SQL с помощью log4j В этом разделе каждого раздела предлагается использовать P6Spy , который также может быть интегрирован в Spring согласно этой статье .

48
ответ дан 7 November 2019 в 07:22
поделиться

Я не уверен на 100%, что вы получаете, поскольку обычно вы передаете свои SQL-запросы (параметризованные или нет) в JdbcTemplate, и в этом случае вы должны просто регистрировать их. Если у вас есть PreparedStatement , и вы не знаете, какой из них выполняется, метод toString должен работать нормально. Но раз уж мы заговорили об этом, здесь есть хороший пакет регистратора Jdbc , который позволит вам автоматически регистрировать ваши запросы, а также каждый раз видеть связанные параметры. Очень полезно. Результат выглядит примерно так:

executing PreparedStatement: 'insert into ECAL_USER_APPT
(appt_id, user_id, accepted, scheduler, id) values (?, ?, ?, ?, null)'
     with bind parameters: {1=25, 2=49, 3=1, 4=1} 
0
ответ дан 7 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: