FunctionalInterface~一个批量处理数据的类
主要使用了一个委托的方式 ,函数式接口,将需要处理的业务逻辑以参数的方式传到方法里,而批量处理的方法代码比较固定,所以进行了抽象。
/**
* 数据处理辅助类.
*/
public class DataHelper {
static Logger logger = LoggerFactory.getLogger(DataHelper.class);
/**
* 分页处理逻辑.
*
* @param total
* @param mapper
* @param query
* @param consumer
* @param <T>
*/
public static <T> void fillDataByPage(int total,
int pageSize,
BaseMapper<T> mapper,
QueryWrapper<T> query,
Consumer<T> consumer) {
Integer totalPage = total / pageSize;
if (totalPage > pageSize && totalPage % pageSize != 0) {
totalPage++;
}
for (int i = 1; i <= totalPage; i++) {
IPage<T> pages = mapper.selectPage(
new Page<>(i, pageSize), query);
List<T> list = pages.getRecords();
for (T item : list) {
consumer.accept(item);
}
logger.info("【当前数据页:{}/{}】", i, pageSize);
}
}
}
业务层在使用批量大数据处理时,可以直接调用这个fillDataByPage
方法,它们只关注自己的业务逻辑即可。
QueryWrapper<UserAccountSet> actRuExecutionQueryWrapper = new QueryWrapper<>();
actRuExecutionQueryWrapper.eq("AccountState", 0);
Integer total = userAccountSetDao.selectCount(actRuExecutionQueryWrapper);
DataHelper.fillDataByPage(total, DATA_PAGE_SIZE, userAccountSetDao, actRuExecutionQueryWrapper, (userAccountSet) -> {
// 业务逻辑代码
});
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2019-04-29 Spring里的Async注解实现异步操作
2015-04-29 MongoDB学习笔记系列
2015-04-29 MongoDB学习笔记~为IMongoRepository接口添加了增删改方法,针对官方驱动