当前位置: 首页 > 知识库问答 >
问题:

如何在java Spring中记录sql查询(带有实际参数)

蔺山
2023-03-14

我如何在java Spring中记录sql查询(使用实际参数)。

我的开发环境

  1. Java
  2. SpringJdbcTemplate

我来阐述一下这个问题。

我的伪代码是这样的。

String sql = "SELECT COLUMN1 FROM MYTABLE WHERE COLUMN2=? "
List<MyVO> MyVOList = getJdbcTemplate().query(sql, new Object[] { date }, 
                           new RowMapper...

现在,如果我想记录SQL——记录发送给它的实际日期——我不知道如何做。

选项1:我总是可以记录SQL并分别记录参数,但我希望在日志中包含实际的SQL,以便支持人员可以复制粘贴SQL并在需要时从SQL客户端运行它。

选项2:我可以考虑做一个字符串替换,用java创建SQL,然后记录它。然而,由于一些反常的编码错误,实际的SQL和记录的SQL总是不同的。

有人试图解决这个问题并取得任何进展吗?

请分享。谢谢。

注意:我已经阅读了与数据库通信的日志SQL。使用此解决方案对我来说不是一个选项。我在企业设置中工作,jdbcdslog-exp不在批准的软件列表中。

共有2个答案

壤驷喜
2023-03-14

Jdbc方法最终调用执行方法。下面是 JdbcTemplete Spring类中的执行方法。扩展此类并记录此.val$sql,这可能会提供所需的内容。

public void execute(String sql) throws DataAccessException {
    if (this.logger.isDebugEnabled()) {
        this.logger.debug("Executing SQL statement [" + sql + "]");
    }

    execute(new StatementCallback(sql) {
        public Object doInStatement(Statement stmt) throws SQLException {
            stmt.execute(this.val$sql);
            return null;
        }

        public String getSql() {
            return this.val$sql;
        }
    });
}
谯翔
2023-03-14

使用Spring记录SQL查询

 类似资料:
  • 问题内容: 如何记录django应用程序执行的所有SQL查询? 我想记录所有内容,包括来自管理站点的SQL。我看到了这个问题和一个常见问题解答,但是我仍然不知道应该把它放在哪里 将所有内容记录到一个文件? 所以我的问题是-我应该怎么做才能拥有一个记录所有SQL语句的文件(例如all-sql.log)? 问题答案: 也许看看https://github.com/django-debug-toolba

  • 问题内容: 我正在尝试测试将参数传递给sql.DB.Query方法的行为(使用database / sql包和github.com/lib/pq上的PostgreSQL驱动程序)。处理原始查询字符串以查看如何插入参数后,是否有任何方法可以获取原始查询字符串?例如,我正在考虑编写一个准备好的查询,然后检查结果语句。有任何想法吗?谢谢! 问题答案: 它看起来不像在查询本身中插入参数。它发送查询,然后等

  • 有什么方法可以记录下面的查询吗? 其中查询参数名称是动态的,将从客户端接收。 我正在使用最新的Swagger API。

  • 问题内容: 我可以在mysql数据库上打开审核日志记录吗? 我基本上想监视所有查询一个小时,并将日志转储到文件中。 问题答案: 使用–log选项启动mysql: 或在文件中放置以下内容: 任何一种都将所有查询记录到log_file_name。 您也可以使用选项代替来仅记录慢速查询。默认情况下,花费10秒或更长时间的查询被认为是缓慢的,您可以通过设置查询在记录之前必须执行的秒数来更改它。

  • 在Laravel 4中记录SQL查询已经有几个问题。但是我已经尝试了几乎所有的方法,但仍然没有达到我想要的效果。 这是我的情况 > 在我的php视图文件中,我向服务器发出AJAX请求 接收到AJAX请求并运行RAW参数化的PostgresSQL查询(例如: DB::选择('选择*从my_table其中id=?',数组(1)) 如果我用 我只得到“从我的_表中选择*,其中id=?”作为没有实际填充I

  • 问题内容: 关于在Laravel 4中记录SQL查询,已经有几个问题。但是我已经尝试了几乎所有问题,但仍然无法按照我想要的方式工作。 这是我的情况 在我的php视图文件中,我向服务器发出AJAX请求 接收到AJAX请求并运行RAW参数化的Postgres SQL查询(例如 DB :: select(’select * from my_table where id =?’,array(1)) 如果我