MyBatis懒加载数据(大批量数据处理)

使用范例

Cursor约定使用Iterator去懒加载数据,以时间换空间,非常适合处理通常无法容纳在内存中的数百万个项目查询。如果在 resultMap 中使用集合,则必须使用 resultMap 的 id 列对游标 SQL 查询进行排序(resultOrdered="true")。

java 复制代码
//为了避免bug,手动管理一个session
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
    DDeviceShopIndexStatusMapper shopIndexStatusMapper = sqlSession.getMapper(DDeviceShopIndexStatusMapper.class);
    try (Cursor<DAlarmEventDTO> cursor = shopIndexStatusMapper.selectDevicesForShopClosed(commonProperties.getOpenShopStatus(), ABNORMAL.getCode())) {
        for (DAlarmEventDTO alarmEventDTO : cursor) {
            applicationContext.publishEvent(new DeviceShopClosedEvent(new Object(), alarmEventDTO));
        }
    } catch (IOException e) {
        log.error("shopStatusCheckJob cursor error:", e);
    }
}
============================
//方法定义
Cursor<DAlarmEventDTO> selectDevicesForShopClosed(@Param("shopStatus") List<String> shopStatus, @Param("status") Integer status);
============================
//xml写法与平常无异
<select id="selectDevicesForShopClosed" resultType="com.rome.device.monitor.admin.infrastructure.remote.dto.DAlarmEventDTO">
    select ddsb.device_key,
           ....
    from d_device_detail ddd
    left join d_device_shop_bind ddsb on ddd.device_key = ddsb.device_key
    ....
    where 
    ....
</select>
相关推荐
starzy199038 分钟前
Flink SlotManager启动流程源码深度剖析:从ResourceManager到Slot分配的完整链路
java·大数据·flink
极光通讯40 分钟前
服务器内存来料检验(IQC)实操:批次追溯、外观判定与上机验证
java·服务器·算法
4SAPI41 分钟前
AI API Gateway平台哪个好?从架构视角看企业多模型网关选型与实践
java·大数据·人工智能·gateway·php
EatFan43 分钟前
2026 后端 AI 工程化:Spring AI 2.0、MCP 协议与 Agent 内嵌如何收进 Java 生产系统
java·人工智能·spring·agent·spring ai·spring boot 3·mcp
JPower_mr.g1 小时前
SmartCall 音色管理技术解析:基于 SPI 的可扩展音色注册架构
java·开发语言·人工智能·ai·架构·开源
测试开发Kevin1 小时前
IDEA工程结构解析:项目、模块、库、Facet、Artifact (工件) 概念说明
java·ide·intellij idea
大侠归来1 小时前
Spring Boot 2.1 → 3.5 迁移推演:从实战出发的完整路线图
java·spring boot·后端
Wang's Blog1 小时前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 的 DirectExchange 路由模式
java·中间件·java-rabbitmq
Sweet锦1 小时前
jDCS 开源项目:面向工业现场的 Modbus RTU 数据采集基础框架
java·spring boot·物联网·开源
海马1 小时前
Spring Boot 开发知识整理
java·spring boot·后端