mybatis批量更新map集合

注意

mybatis批量更新 需要在数据库链接url后面带一个参数 &allowMultiQueries=true

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver

User对象

@Data
@Builder
public class User {
    private Integer id;
    private String userName;
    private String passWord;
    private String realName;
}
@Repository
public interface UserMapper {
    //这使用@Param注解 html中就不要在使用parameterType指定传入参数类型,mybatis会自动推到参数类型
  int updateMap(@Param("userMap") Map<Integer,User> userMap);
}

    <update id="updateMap">
        <foreach collection="userMap" item="value" index="key" separator=";">
            update user set
            userName = #{value.userName},
            passWord = #{value.passWord},
            realName = #{value.realName}
            where id = #{key}
        </foreach>

注意collection="userMap.entrySet()"和 collection="userMap"这样写法都可以

test

@SpringBootTest
public class UserMapperTest {
 @Test
 public void  updateMapTest() {
    @Autowired
    UserMapper userMapper;

     List<User> userList = userMapper.findAll();
     userList.forEach(u->{
         u.setUserName(u.getUserName()+"11");
         u.setPassWord(u.getPassWord()+22);
         u.setRealName(u.getRealName()+33);
     });
     Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(u->u.getId(),u->u));
     System.out.println("userMap:"+userMap);
    int result = userMapper.updateMap(userMap);
    System.out.println("result:"+result);
    
    }
    }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值