mybatis-plus根据指定条件批量更新

1.service实现类中

比如我这里只针对UserEntity,在UserServiceImpl下(该实现类是继承了mybatis-plus的ServiceImpl的)新增如下代码:

java 复制代码
public boolean updateBatchByQueryWrapper(Collection<UserEntity> entityList, Function<UserEntity, QueryWrapper> queryWrapperFunction) {
    String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE);
    return this.executeBatch(entityList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {
        ParamMap param = new ParamMap();
        param.put(Constants.ENTITY, entity);
        param.put(Constants.WRAPPER, queryWrapperFunction.apply(entity));
        sqlSession.update(sqlStatement, param);
    });
}

1)这里使用了Function函数式接口,如果不知道请查看Java函数式编程入门学习举例与优点详解

2)batchSize这里默认使用DEFAULT_BATCH_SIZE,也是mybatis-plus中的默认值1000,当然你也可以保留该入参

3)主要核心的修改地方是以下两部分:

java 复制代码
// SqlMethod.UPDATE_BY_ID改为SqlMethod.UPDATE
String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE);
//和新增如下的wapper,即更新条件
param.put(Constants.WRAPPER, queryWrapperFunction.apply(entity));

2.调用时

java 复制代码
userService.updateBatchByQueryWrapper(userList, user->new QueryWrapper<>().eq("username",user.getUsername()));

3. 参考文章

相关推荐
zzb158019 小时前
RAG from Scratch-优化-routing
java·前端·网络·人工智能·后端·python·mybatis
MegaDataFlowers20 小时前
使用注解开发
mybatis
常利兵21 小时前
Spring Boot + MyBatis,给数据穿上“隐形盔甲”
java·spring boot·mybatis
Java程序之猿1 天前
SpringBoot + camel+IBM MQ实现消息队列处理
java·spring boot·mybatis
罗小爬EX2 天前
MyBatis Interceptor执行顺序详解(plugin机制、责任链模式)
mybatis·interceptor
weixin_704266052 天前
Spring整合MyBatis(一)
java·spring·mybatis
寻见9032 天前
10 分钟吃透 MyBatis 核心|从底层原理到实战技巧,Java 开发者必藏(无废话干货)
java·mysql·mybatis
TTc_2 天前
对于子查询语句多条sql报错排查
数据库·sql·mybatis
小涛不学习2 天前
MyBatis-Plus 完整教程(入门到实战)
mybatis
一只小bit2 天前
JavaWeb 开发 —— 从 JDBC 到 Mybatis 数据库使用
数据库·maven·mybatis