当前位置: 首页 > 知识库问答 >
问题:

如何在参数化查询中使用spring MVC jdbcTempates传递删除多行的字符串

邵毅
2023-03-14

我被spring mvc jdbctemplates困住了。我想按id删除多个图像。但是我无法在JDBCTemplates中实现。

我正在使用字符串来存储所有的ID,并用逗号分隔它们。

public int deleteHomeImage(String imageId, String imageName) {   // imageId = 1,2,3 like that 
    logger.debug("Image id is:"+imageId);
    System.out.println("dbyy"+imageId);  // output in console 1,2,3
    String arry[] = imageId.split(",");
    int ab[]=new int[arry.length];
    List<Integer> lis = new ArrayList();
    for(int i=0;i<ab.length;i++)
    {
    //((imageId[i]));
        lis.add(Integer.parseInt(arry[i]));
        System.out.println(arry[i]);   
    }
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("imageId", arry);


    //int deleteFlag = getJdbcTemplate().update(QueryConstant.imageHomeDelete, params);
    //int deleteFlag = getJdbcTemplate().update(QueryConstant.imageHomeDelete).
    //Query q=.createQuery("DELETE FROM INTERNET_IMG_ADV WHERE IMG_ID IN(:id)");
    int deleteFlag = getJdbcTemplate().update(QueryConstant.imageHomeDelete,lis);

    //int deleteFlag = getJdbcTemplate().update(QueryConstant.imageHomeDelete, new Object[]{params});
    return deleteFlag;
}
String imageAdvDelete = "DELETE FROM INTERNET_IMG_ADV WHERE IMG_ID IN(:id)"

严重:servlet[DispatcherServlet]的servlet.service()在路径[/ona_new]上下文中抛出异常[请求处理失败;嵌套异常为org.springframework.jdbc.uncategorizedsqlexception:preparedstatementcallback;针对SQL[DELETE FROM INTERNET_IMG_DETAILS WHERE IMG_ID in?];SQL状态[null];错误代码[17004];无效列类型;嵌套异常为java.SQL.SQLException:无效列类型]

共有1个答案

边永贞
2023-03-14

下面的代码片段将解决您的问题。

  NamedParameterJdbcTemplate namedTemplate = new NamedParameterJdbcTemplate(getJdbcTemplate());
    List imageIds= Arrays.asList(new Integer[] {1, 2, 3});
    Map<String,List> params = Collections.singletonMap("ids", imageIds);
    int deleteFlag = namedTemplate .update(QueryConstant.imageHomeDelete,params);
 类似资料:
  • 问题内容: 除了使用正则表达式之外,还有没有更好的方法可以从标准Ja​​vaScript中的URL字符串中的查询字符串中删除参数? 到目前为止,这是我想出的方法,似乎可以在我的测试中使用,但是我不希望重新发明querystring解析! 问题答案: 似乎很危险,因为它的参数“ bar”会匹配: 另外,如果包含RegExp中特殊的任何字符(例如“。”),它将失败。而且它不是全局正则表达式,因此只会删

  • 问题内容: 是否存在通过查询字符串传递数组的标准方法? 需要明确的是,我有一个带有多个值的查询字符串,其中一个是数组值。我希望将该查询字符串值视为一个数组-我不希望该数组爆炸,以使其与其他查询字符串变量没有区别。 编辑: 根据@Alex的答案,没有标准的方法可以执行此操作,因此我的后续工作是什么才是 识别 我正在读取的参数同时是 PHP 和 Javascript 数组的简单方法? 用相同的名称命名

  • 问题内容: 我正在尝试为我的应用程序编写查询,但是遇到了一些麻烦。我需要将数据库的一个字段作为参数传递,例如: 因为WHERE子句和ORDER BY子句是动态的,所以用户可以选择。 使用它没有用。 问题答案: JasperReports中 有两个用于参数引用的语法表达式: 和和 。 $ P {paramName}语法 主要用于设置 WHERE 输入参数值。替换算法是“智能”的,其实现使用java.

  • 问题内容: 在我的HQL查询下方找到 该查询工作正常,但是在此情况下,我想传递userId的值,但无法弄清楚该怎么做。请帮助..!提前致谢..!! 问题答案: 我很简单地将参数添加到HQL __ 在这里,我有硬编码15您可以简单地使用变量代替它

  • 我需要传递一个字符串参数作为querystring参数,这应该是可选的。 在这里,我希望将位置作为可选参数。我试着用作为。但它对我不起作用。让我知道解决方案。

  • 我有一个查询字符串,可以是: 编辑:参数值的长度可以大于2 有人知道在String.ReplaceAll([regex],[replace])中使用什么好的regex表达式吗?