Java:JdbcTemplate使用in进行更新

开篇

很久没发东西,主要是不知道写啥,有点词穷了…(囧)

这是前几天遇到的一个问题,然后找到了解决方案.

贴在这做个记录吧.

另外,使用Python 3+的话,格式化字符串可以使用,如下方式了[更多官方例子(英文)]:

'{0}{1}'.format(abc,def)
'{name}{age}'.format(newName,newAge)

想来,我用着Python3.5的版本,却还在用百分号格式化字符串(……..).

好了,回归正题.

下面是Java代码,使用的…………..自然是Spring的JdbcTemplate了……[官方的介绍(英文)]

java
image-2490

重点在这..

/*
userids: 以逗号分隔的字符串,例如:'1,2,3,4,5'
stata:状态数字,例如:'5'
*/
void updateState(String userids, String state) {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
StringBuffer sql = new StringBuffer();
String[] xmlId = xmlids.split(",");
/*
在这不能用Arrays.asList()将数组转换为List.
因为Arrays.asList()会将整个数组作为List的第一个元素.
*/
final List<String> lists = new ArrayList<>();
// 动态拼接sql.也就是在这拼接占位符
sql.append(" UPDATE topuser SET state=? WHERE XMLID in ( ");
lists.add(state);
for(int i = 0,j=xmlId.length;i<j;i++){
lists.add(xmlId[i]);
if(i!=0)sql.append(",");
sql.append("?");
}
sql.append(" )");
jdbcTemplate.update(sql.toString(),new PreparedStatementSetter(){

@Override
public void setValues(PreparedStatement ps) throws SQLException {
for(int i = 0,j=lists.size();i<j;i++){ // 使用这种方式为占位符填充值.
ps.setString((i+1), lists.get(i));
}
}});
}

数据库是MySQL.差点忘了……

《Java:JdbcTemplate使用in进行更新》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据