开篇
很久没发东西,主要是不知道写啥,有点词穷了…(囧)
这是前几天遇到的一个问题,然后找到了解决方案.
贴在这做个记录吧.
另外,使用Python 3+的话,格式化字符串可以使用,如下方式了[更多官方例子(英文)]:
1 2 | '{0}{1}'.format(abc,def) '{name}{age}'.format(newName,newAge) |
想来,我用着Python3.5的版本,却还在用百分号格式化字符串(……..).
好了,回归正题.
下面是Java代码,使用的…………..自然是Spring的JdbcTemplate了……[官方的介绍(英文)]
重点在这..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /* 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.差点忘了……
我只是来随便看看!