jdbcTemplate的一个使用的例子

JPF1024 2016-10-21 08:09:11
下面这样使用,好像不能替换占位符,怎么处理。求哪位大神告知一下。




String[] ids = {"1","2","3","4","5"}; // 参数传进来的.
List<String> lists = Arrays.asList(ids);
//下面这行给占位符没效果.
jdbcTemplate.update("update sysuser set state='5' where id in (?,?,?,?,?)",lists); // asList会直接把12345设置成List的第一个元素




谢谢.

...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
游一游走一走 2016-10-21
  • 打赏
  • 举报
回复

    void test() {
        List<String> ids = ["1", "2", "3", "4", "5"]
        MapSqlParameterSource parameters = new MapSqlParameterSource("ids", ids);
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
        namedParameterJdbcTemplate.update("UPDATE user SET create_date=create_date WHERE id IN (:ids)", parameters)
    }
piterlin 2016-10-21
  • 打赏
  • 举报
回复

jdbcTemplate.update("update sysuser set state='5' where id=? or id=? or id=? or id=? or id=?","1","2","3","4","5");
上面假设你的ID是数字类型 原文: update(String sql, Object... args) Issue a single SQL update operation (such as an insert, update or delete statement) via a prepared statement, binding the given arguments. 参考:http://www.coderhelper.top/doc/spring4.3.3-docs/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html
家里敷泥呀 2016-10-21
  • 打赏
  • 举报
回复
jdbcTemplate.update("update sysuser set state='5' where id in (?,?,?,?,?)",ids) 这样写,行吗?
JPF1024 2016-10-21
  • 打赏
  • 举报
回复
引用 1 楼 Q80470101 的回复:
jdbcTemplate.update("update sysuser set state='5' where id in (?,?,?,?,?)",ids) 这样写,行吗?
占位符不是固定的,固定的话,这样写好像可以。
JPF1024 2016-10-21
  • 打赏
  • 举报
回复
sql的问号是动态的,所以数量不定,List<String>是这样的。 下面的方式就可以搞定。 result = jdbcTemplate.update(newSql,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)); } }}); 解决了.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧