java - 在 groovy 中记录准备好的 sql 查询

标签 java sql groovy

我需要在 groovy 中记录我准备好的 sql 查询。

为了避免 sql 注入(inject)并具有自动字符串引号(这很重要),我使用了这种设计:

String name = "Bobby"
Integer status = 1    
def query = 'UPDATE my_tbl SET status=? WHERE name=?';
sql.execute (query, [status, name])

我如何使用我的参数准备好sql查询? 可能还有其他解决方案吗?

最佳答案

我猜您想要做的是记录查询字符串,并将 ? 参数替换为它们的值?我不知道如何在应用程序日志中执行此操作,但您的数据库可能有一个可以显示它的查询日志。

如果您使用 execute 的重载版本,您可以获得非常接近您所要求的结果

Map params [status: 1, name: "Bobby"    
def query = 'UPDATE my_tbl SET status=? WHERE name=?';
log.debug "query: $query, params: $params"
sql.execute(params, query)

关于java - 在 groovy 中记录准备好的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039641/

相关文章:

java - 将独立指令添加到 Jackson XML 序列化

java - 将文本从一件事更改为另一件事的 JLabel

mysql - 为什么有时自动增量列的值中存在多个间隙之一?

groovy - 自动格式化build.gradle

templates - grails模板方法代码太大错误?

java - 如何解决 ClassNotFoundException?

java - 如何解决 IllegalArgumentException : Target object must not be null

sql - db2 数据库中的存储过程列表

sql - 两个查询是否相同?

jenkins - 如何添加从 jenkins 管道中的某个阶段开始的能力?