当前位置: 首页 > news >正文

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

1.service实现类中

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

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)主要核心的修改地方是以下两部分:

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

2.调用时

userService.updateBatchByQueryWrapper(userList, user->new QueryWrapper<>().eq("username",user.getUsername()));

3. 参考文章

http://www.lryc.cn/news/173317.html

相关文章:

  • 虹科方案 | LIN/CAN总线汽车零部件测试方案
  • [solidity]合约调用合约
  • Vulnhub系列靶机---JANGOW 1.0.1
  • 肖sir__项目环境之全流程__005
  • 搜狗输入法下键翻页
  • C#多线程
  • Unity 编辑器常用方法
  • 21 mysql ref 查询
  • 启山智软/一款包含主流商城类型的一款电商中台系统100%开源
  • 【C语言】指针的进阶(四)—— 企业笔试题解析
  • 博弈论——连续产量古诺模型
  • ROS2 驱动思岚G4雷达(ydlidar)- Rviz显示
  • Spring Cloud Alibaba Sentinel流量防卫兵
  • 1.简单工厂模式
  • GitHub Copilot Chat
  • 利用 QT 完成一个人脸识别系统,完成登录操作
  • MATLAB APP纯小白入门 两数相加
  • ubuntu右上角的网络连接图标消失解决办法
  • conda创建虚拟环境安装aix360
  • CentOS安装mariadb
  • FPGA——基础知识合集
  • 【pytest】 标记冒烟用例 @pytest.mark.smoke
  • 数据结构入门-14-排序
  • Gin学习记录4——Controller和中间件
  • FL Studio21.2中文版数字音乐制作软件
  • ELK 企业级日志分析系统 ELFK
  • IDEA中创建Java Web项目方法1
  • 源码:TMS FlexCel Studio for .NET 7.19
  • 多输入多输出 | MATLAB实现PSO-BP粒子群优化BP神经网络多输入多输出
  • 操作系统:系统引导以及虚拟机