正在打开每日关注
正在打开每日关注
视频演示用 MyBatis 的 MapKey 注解把查询结果按用户 ID 聚合为 Map,并简述其结果处理源码。
咱们通过测试方法调用一下看眼效果,可以看到它的返回结果是一个Map,K是用户的ID,Y6是用户这个对象,看一下它的原码实现,通过SlideList获取用户的List集合,可以看到这是一个List集合,然后获取DefaultMapResoutHandler处理器,循环便利List调用HandlerResout的方法,咱们可以看一下HandlerResout的方法的实现,
视频讲解 MyBatis 的 @MapKey 注解:当查询需要返回“唯一键 → 实体对象”的 Map 时,可在 Mapper 方法上指定实体属性作为键,例如以用户 ID 映射到 User 对象。内容进一步指向查询链路:先通过 selectList 获得列表,再由 DefaultMapResultHandler 遍历结果并按 mapKey 取属性值写入 Map。
可借鉴之处是,这种返回形态适合调用方确实需要按唯一标识高频查找的场景,能避免业务层重复遍历列表。边界在于键必须在结果中可读取且语义上唯一;重复键会导致后写入的值覆盖先前值。视频只展示了单一用户示例,未说明空键、重复键、嵌套属性、查询字段缺失及数据库层唯一性约束等行为,实际使用前应结合版本源码与测试确认。