使用JdbcTemplate进行动态查询 [英] Make Dynamic Query with JdbcTemplate

查看:839
本文介绍了使用JdbcTemplate进行动态查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于使用JdbcTemplate进行动态查询的问题。

I have one question regarding make dynamic query with 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);

现在我的问题是我想要在插入时自动生成问号的相同数量的值查询。

Now my question is that I want same number of "value" as per auto generate question marks in insert query.

现在,值变量被视为一个字符串,所以如果我有2个或更多的问号,那么在值变量中只有一个用逗号分隔的完整字符串,所以它不是工作。

Right now, the value variable consider as one string so if I have 2 or more question marks then in value variable only one full string with comma separated so it's not working.

请参阅下面我的查询:

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

我想要如下:

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


推荐答案

**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);

这篇关于使用JdbcTemplate进行动态查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆