Как сделать, чтобы ibatis регистрировал полный SQL-оператор, а не просто заменял аргумент на '?' - PullRequest
2 голосов
/ 26 октября 2011

С текущим файлом log4j.xml, показанным ниже, я получаю журналы типа 'select * от пользователей, где user_id =?'

<logger name="com.ibatis">
    <level value="debug"/>
    <appender-ref ref="IBATIS"/>
</logger>
<logger name="java.sql">
    <level value="debug"/>
    <appender-ref ref="IBATIS"/>
</logger>

1 Ответ

1 голос
/ 26 октября 2011

Насколько я понимаю, в документации ibatis ведение журнала запросов делегировано стандартным классам JDBC в пакете java.sql. Теперь ваш пример журнала показывает, что используется подготовленный оператор. Обычно они работают так, что подготовленный оператор (включая заполнители вопросительного знака) отправляется на сервер базы данных заранее. Фактические значения отправляются отдельно, когда они были связаны и запрос выполнен. Как прямой результат, расширенный запрос (вывод журнала, который вы ожидаете получить) фактически никогда не создается на стороне клиента, а скорее на самом сервере базы данных.

Однако есть способы обойти эту проблему. Вы должны быть в состоянии обратиться к предложенному здесь ответу для возможного решения: Ведение журнала PreparedStatements в Java

...