如何使ibatis记录完整的SQL语句,而不仅仅用'?'替换参数

时间:2011-10-26 03:25:00

标签: java log4j ibatis

使用下面显示的当前log4j.xml,我会收到“select * from users 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 个答案:

答案 0 :(得分:1)

我理解ibatis文档的方式是将查询的日志记录委托给java.sql包中的标准JDBC类。现在,您的示例日志输出表明使用了预准备语句。这些通常工作的方式是预先将准备好的语句(包括问号占位符)发送到数据库服务器。实际值在绑定并执行查询时单独发送。直接结果是,扩展查询(您希望获得的日志输出)实际上从未在客户端构建,而是在数据库服务器本身上构建。

然而,有办法解决这个问题。您应该能够参考此处提出的答案以获得可能的解决方案: Logging PreparedStatements in Java

相关问题