mybatis 批量更新

 <update id="updateBaBaBa" parameterType="java.util.Map">
     <foreach collection="go" index="index" item="item"  separator=";" >
         update tenant_account set remainder = remainder + #{item.sumM},order_finished = order_finished+#{item.countO},remainder_update_time = #{item.remainder_update_time} where the_super_id = #{item.tId}
     </foreach>
  </update>

参数

复制代码
        /**
         *
         *      tId  tenandId
         *      sumM
         *      countO
         *      remainder_update_time
         *
         *      tId  tenandId
         * go - sumM
         *      countO
         *      remainder_update_time
         *
         *      tId  tenandId
         *      sumM
         *      countO
         *      remainder_update_time
         *
         */
        Map<String, List<Map<String, String>>> va = new LinkedHashMap<>();

        List<Map<String, String>> list = new LinkedList<>();

        String thisOne = null;
        if(null == table){
            //前一天的临时表
            if (DBCWriteVerticle.currentTempTable.equals("orders_temp1")) {
                thisOne = "orders_temp4";
            } else if (DBCWriteVerticle.currentTempTable.equals("orders_temp2")) {
                thisOne = "orders_temp1";
            } else if (DBCWriteVerticle.currentTempTable.equals("orders_temp3")) {
                thisOne = "orders_temp2";
            } else if (DBCWriteVerticle.currentTempTable.equals("orders_temp4")) {
                thisOne = "orders_temp3";
            }
        }else {
            thisOne = table;
        }
        for (String tId : tenantIds) {
            Map<String, String> param = new HashMap<>();

            param.put("tableName",thisOne);
            param.put("the_super_id", tId);

            Map<String, Long> re = sqlSession.selectOne(MybatisNamespace.ordersTemp_selectTotal, param);

            Map<String, String> foIn = new LinkedHashMap<>();
            foIn.put("tId", tId);
            foIn.put("sumM", re.get("sumM") + "");
            foIn.put("countO", re.get("countO") + "");
            foIn.put("remainder_update_time", new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date().getTime()));


            list.add(foIn);

        }


        va.put("go", list);

        sqlSession.close();

        System.out.println("         111111111112222222222  " + va.get("go").get(0).get("sumM"));

        SqlSession sqlSessionUpdate = null;
        boolean ok = true;
        try {
            sqlSessionUpdate = sqlSessionFactory.openSession(false);
            sqlSessionUpdate.update(MybatisNamespace.tenantAccount_updateBaBaBa, va);
复制代码

 

posted on   --LP--  阅读(223)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示