网站制作学校要的,360元网站建设 网络服务,网易企业邮箱怎么登录,云娜网站建设文章目录 前言一、常用方法二、使用示例总结 前言
MyBatis-Plus 从 3.5.4 版本开始支持流式查询#xff0c;这是 MyBatis 的原生功能#xff0c;通过 ResultHandler 接口实现结果集的流式查询。这种查询方式适用于数据跑批或处理大数据的业务场景。
在 BaseMapper 中#… 文章目录 前言一、常用方法二、使用示例总结 前言
MyBatis-Plus 从 3.5.4 版本开始支持流式查询这是 MyBatis 的原生功能通过 ResultHandler 接口实现结果集的流式查询。这种查询方式适用于数据跑批或处理大数据的业务场景。
在 BaseMapper 中新增了多个重载方法包括 selectList, selectByMap, selectBatchIds, selectMaps, selectObjs这些方法可以与流式查询结合使用。
需要注意的是在低版本的 MyBatis-Plus 中如果自定义 ResultHandler 结合分页查询可能会出现错误。在这种情况下需要手动关闭 count 查询。具体问题和解决方案可以参考 GitHub 上的相关 issue。 一、常用方法
getResultObject: 获取数据库中的每一条记录。getResultCount: 获取当前处理的结果集条数每处理一条记录该计数器会加1计数从1开始。stop: 停止继续处理结果集相当于在循环中使用 break 语句。
二、使用示例
以下是使用流式查询的示例代码展示了如何结合分页从数据库中拉取数据进行批量处理以及如何获取表中的所有记录进行处理。
// 结合分页按批次从数据库拉取数据出来跑批例如从数据库获取10万记录做数据处理
PageH2User page new Page(1, 100000);
baseMapper.selectList(page, Wrappers.emptyWrapper(), new ResultHandlerH2User() {int count 0;Overridepublic void handleResult(ResultContext? extends H2User resultContext) {H2User h2User resultContext.getResultObject();System.out.println(当前处理第 (count) 条记录: h2User);// 在这里进行你的业务处理比如分发任务}
});// 从数据库获取表所有记录做数据处理
baseMapper.selectList(Wrappers.emptyWrapper(), new ResultHandlerH2User() {int count 0;Overridepublic void handleResult(ResultContext? extends H2User resultContext) {H2User h2User resultContext.getResultObject();System.out.println(当前处理第 (count) 条记录: h2User);// 在这里进行你的业务处理比如分发任务}
});总结
回到顶部