iBatis get executed sql

2022-09-02 12:25:48

有没有办法获得iBatis的执行查询?我想将查询重用于 UNION 查询。

例如:

<sqlMap namespace="userSQLMap">
   <select id="getUser" resultClass="UserPackage.User">
        SELECT username,
               password 
        FROM table 
        WHERE id=#value#
   </select>
</sqlMap>

当我执行查询时

int id = 1
List<User> userList = queryDAO.executeForObjectList("userSQLMap.getUser",id)

我想得到SELECT username, password FROM table WHERE id=1

有什么方法可以得到查询吗?

谢谢。


答案 1

将其添加到您的log4j.xml文件中,您可以在控制台上看到输出。

<logger name="java.sql" additivity="false">
    <level value="debug" />
    <appender-ref ref="console" />
</logger>

您将看到正在传递的参数、正在执行的查询以及查询的输出。


答案 2

可以显示此信息。iBatis 使用了一些日志记录框架,包括 .
在类路径中使用创建文件。例如,您必须将下一行放在文件中:Log4JLog4Jlog4j.properties

log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
    
log4j.logger.com.ibatis=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

有关其他日志记录框架和详细信息,请参阅此链接


推荐