zoukankan      html  css  js  c++  java
  • (批量更新)对多个符合条件的id做更新操作

    需求描述:把checkbox勾选的对应id的记录的标志位置1或0,这个其实不难的,不过我自己做的话,肯定是多次访问数据库做更新,看了老大的代码,发现差距不是一般的大,老大把sql灵活运用,结果一次访问数据库,就做完更新了,真的是get到了。不多说,贴代码。

    代码:

    public void changeHide(String resIds, String type) throws Exception {//service层  type就是一个值 0 或 1
    if(Tools.notEmpty(resIds)){
    List<String> list = new ArrayList<>();
    String[] resIdArr = resIds.split(",");
    for (String resId :resIdArr) {
    list.add(resId);
    }
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("resIds",list);
    paramMap.put("type",type);
    dao.update("XXXXXResourcesMapper.changeHide",paramMap);
    }
    }
    mapper里的sql:
    <update id="changeHide" parameterType="java.util.Map">
    update
    <include refid="tableName"></include>
    set r.hide = #{type}
    where r.res_id in
    <foreach item="item" index="index" collection="resIds" open="(" separator="," close=")">//这里要说明一下,collection参数一定要填写对应好,因为前边方法传的是resIds,所以这里也是,item表示list里的元素的别名 index表示索引,当指针来理解
    #{item}
    </foreach>
    </update>

    总结:这个批量更新的精华就在于,只要数据库中的id在这个list(也就是resIds)中存在,就对其进行更新操作。  让我拿来做,我可能会对resIds做个增强for循环,然后再循环里边调用update方法,参数就是每一个resId。还是敲得代码少,老大这个是真的厉害!!!

  • 相关阅读:
    大约 C++ 几个方面分析--overload, override, overwrite, rewrite
    Catalan数总结
    JAVA该队列中的数组,圆阵队列,链队列
    hdu4770:Lights Against Dudely(回溯 + 修剪)
    Birt
    Activity
    简单实现的Servlet文件上传,并显示
    阿里云centos 6.5 32位安装可视化界面的方法
    cannot mount database in EXCLUSIVE mode
    ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/xuchao0506/p/9578030.html
Copyright © 2011-2022 走看看