mybatis动态sql中批量指定更新的使用


mybatis动态sql中批量指定更新的使用

@Mapper
public interface StudentMapper extends BaseMapper {
    /**
    * 批量更新
    * 根据id更新字段
    */
    void updateBatch(List list);
}

对应的xml


    UPDATE STUDENT
    
        
            
                
                    when ID=#{item.id} then #{item.name}
                
            
        
        
            
                
                    when ID=#{item.id} then #{item.sex}
                
            
        
        
            
                
                    when ID=#{item.id} then  #{item.age}
                
            
        
    
    WHERE
    
        ID=#{item.id}
    

对应测试

@Test
public void updateBatch() {
    List list = new ArrayList();
    list.add(new Student(1,"小明","男",18));
    list.add(new Student(2,"小华","女",17));
    list.add(new Student(3,"小红","女",17));
    studentMapper.updateBatch(list);
}

生成对应sql

UPDATE STUDENT
SET 
NAME = CASE 
WHEN ID  = 1 THEN '小明'
WHEN ID  = 2 THEN '小华'
WHEN ID  = 3 THEN '小红'
END,
SEX = CASE 
WHEN ID  = 1 THEN '男'
WHEN ID  = 2 THEN '女'
WHEN ID  = 3 THEN '女'
END,
AGE = CASE 
WHEN ID  = 1 THEN 18
WHEN ID  = 2 THEN 17
WHEN ID  = 3 THEN 17
END
WHERE 
ID = 1 OR ID = 2 OR ID =3

相关