case when + forEach 实现多条件多值批量更新

case when + forEach 实现多条件多值批量更新

1、单个条件

   
        update mydata_table
        
            
                 
                     
                         when id=#{item.id} then #{item.status}
                                         
                 
            
        
        where id in
        
            #{item.id,jdbcType=BIGINT}
        
    

2、多个条件

 
    update demo_table
    
        status=
        
            when field2=#{item.field2} and company_id=#{item.field3} then #{item.status}
        
        create_time =
        
          when field2=#{item.field2} and company_id=#{item.field3} then
          
            
              #{item.createTime}
            
            now()
          
        
    
    WHERE
    
      device_num=#{item.field2} and company_id=#{item.field3}
    
  

注意:
foreach标签如果放在一条SQL外边的执行要比在一条SQL中写foreach然后根据条件循环更新的效率要低,数据量大的时候特别明显,建议foreach标签的使用写在一条SQL语句的中间

你可能感兴趣的:(----【Mybatis】)