SlandShow
@SlandShow
70% of my body is made of movies.

Почему JdbcTemplate не выполняет query с параметрами?

Стоит задача написать параметризованный SQL запрос с помощью JDBC Template'а.

Создаю таблицу:
jdbcTemplate.execute(" CREATE TABLE test (id BIGINT PRIMARY KEY, test_id VARCHAR(50));");


Объявляю параметры:
Map<String, String> parameters = new HashMap();
        parameters.put("test_id", "test");


Апдейт:
jdbcTemplate.update(
                "INSERT INTO test (id, test_id) VALUES (1, :test_id)",
                parameters
        );


На выходе:
"PreparedStatementCallback; bad SQL grammar [INSERT INTO test (id, test_id) VALUES (1, :test_id)]; nested exception is org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement \"INSERT INTO TEST (ID, TEST_ID) VALUES (1, :[*]TEST_ID) \"; expected \"), DEFAULT, NOT, EXISTS, INTERSECTS, SELECT, FROM, WITH\"; SQL statement:\nINSERT INTO test (id, test_id) VALUES (1, :test_id) [42001-197]"


Ещё пытался попробовать этот вариант, всё равно ничего не вышло.

Как быть?
  • Вопрос задан
  • 746 просмотров
Решения вопроса 1
SlandShow
@SlandShow Автор вопроса
70% of my body is made of movies.
Нужен вообще другой темплейт, JDBC так не умеет.

https://www.javatpoint.com/spring-NamedParameterJd...

jdbcTemplate.execute(" CREATE TABLE test (id BIGINT PRIMARY KEY, test_id VARCHAR(50));");
        Map<String, String> parameters = new HashMap();
        parameters.put("test_id", "test");
        jdbcTemplate2.execute(
                "INSERT INTO test (id, test_id) VALUES (1, :test_id)",
                parameters,
                (PreparedStatementCallback) PreparedStatement::executeUpdate
        );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы