2016-02-03 5 views
0

У меня есть один вопрос относительно создания динамического запроса с помощью JdbcTemplate.Сделать динамический запрос с помощью JdbcTemplate

Моего код, как показано ниже:

String insertQueries = "INSERT INTO " + tablename; 

StringJoiner joiner = new StringJoiner(","); 
StringJoiner joiner1 = new StringJoiner(","); 
StringJoiner joiner2 = new StringJoiner(","); 

while (mapIterator.hasNext()) { 
     Map.Entry mapEntry = (Map.Entry) mapIterator.next(); 
     key = joiner.add((String) mapEntry.getKey()).toString(); 
     // value = joiner1.add("\"" + (String) mapEntry.getValue() + "\"").toString(); 
     value = joiner1.add("\"" + (String) mapEntry.getValue() + "\"").toString(); 
     value1 = joiner2.add("?").toString(); 
} 

insertQueries += " (" + key + ")"; 
insertQueries += " VALUES ("+value1+")" ; 

int row = jdbcTemplate.update(insertQueries, value); 

Теперь мой вопрос заключается в том, что я хочу такое же количество «значения» в соответствии с Автогенерацией вопросительных знаков в запросе вставки.

Прямо сейчас переменная значения рассматривается как одна строка, поэтому, если у меня есть 2 или более вопросительных знака, то в переменной значения только одна полная строка с разделенной запятой, чтобы она не работала.

Ниже мой запрос:

INSERT INTO tablename (fname, lname) VALUES ("abc, xyz") ; 

И я хочу, как показано ниже:

INSERT INTO tablename (fname, lname) VALUES ("abc", "xyz") ; 

ответ

1
**StringJoiner joiner2 = new StringJoiner(",", "(", ")");** 
while (mapIterator.hasNext()) { 

//change in value1 as 
value = "\"" + (String) mapEntry.getValue() + "\""; 
value1 = joiner2.add(value); 
myvalue = joiner2.add("?"); 

}

//change insertQueries as with value as (? ,?) 
insertQueries += " VALUES "+ myvalue+"" ; 


//get value1 as ("abc", "xyz") 

//update query as 
int row = jdbcTemplate.update(insertQueries, value1); 
+0

Спасибо за ответ. Но мне нужен код, как показано ниже: insertQueries = INSERT INTO tablename (fname, lname) VALUES (?,?); И мой код будет таким: jdbcTemplate.update (insertQueries, value); И значение динамическое генерируется с разделенной запятой. Пожалуйста, совет. –

+0

Hi, Жаль, что он все еще не работает. Он по-прежнему дает ошибку: PreparedStatementCallback; плохая грамматика SQL [INSERT INTO tablename (last_name, first_name) VALUES (?,?)]; Вложенное исключение: java.sql.SQLException: Нет значения, указанного для параметра 2 –

+0

Пожалуйста, жестко скопируйте файл jdbcTemplate.update (insertQueries, value1), чтобы я мог понять внутренний параметр метода обновления –

Смежные вопросы