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。还是敲得代码少,老大这个是真的厉害!!!

  • 相关阅读:
    【新特性速递】卡片式表格,Yeah~~~
    6个最佳DevOps播客
    在裸金属服务器Bare Metal上Kubernetes
    保护Java应用程序不被窃取数据和源代码2
    家政服务行业动态
    15个免费数据集数据科学项目
    性能测试工具
    利用Apache Pulsar的实时边缘计算
    软件开发的八个误解
    如何防止范围蔓延
  • 原文地址:https://www.cnblogs.com/xuchao0506/p/9578030.html
Copyright © 2011-2022 走看看