Как имитировать PreparedStatement для создания правильного запроса SQL (Sql # withBatch) - PullRequest
0 голосов
/ 27 мая 2011

Вот мой код:

// my SQL query used with PreparedStatement before
def query = "INSERT INTO TAB_A (x,y) VALUES (?,?)

Sql myDb = Sql.newInstance(...)


myDb.withBatch(10000, {stmt ->
  // I get parameters as an array
  def params = getParams();

  String rowQuery = funcThatMimicsPrepStat(query, params)

  stmt.addBatch(rowQuery);  
}

В настоящее время я ищу способ подстроить подготовленное заявление ( funcThatMimicsPrepStat ) внутри withBatch, которое работает только с Statement. Любой совет более чем приветствуется.

1 Ответ

1 голос
/ 27 мая 2011

Groovy 1.8.0 пока не поддерживает его, но похоже, что одна из следующих минорных версий будет поддерживать его.Исходный код транка имеет несколько примеров, которые действительно полезны.Вот один пример, в котором используется PreparedStatement:

def updateCounts = sql.withBatch(20, 'insert into TABLENAME(a, b, c) values (?, ?, ?)') { ps ->
    ps.addBatch(10, 12, 5) // varargs style
    ps.addBatch([7, 3, 98]) // list
    ps.addBatch([22, 67, 11])
    ...
}

Полагаю, вы можете либо отхватить этот фрагмент кода, либо дождаться выпуска Groovy 1.8.x.

...