使用 SOQL 构建地图

许多人忽略的一个非常有用的功能是使用 SOQL 查询构建 Map 的能力。

Map<Id, Account> accounts = new Map<Id, Account>([SELECT Id, Name FROM Account]);
System.debug(accounts);

当你运行此代码时,accounts 会包含你的帐户对象的地图,以 Id 为中心。调试日志的输出看起来类似于:

11:15:10:025 USER_DEBUG [13]|DEBUG|{
    XXXXXXXXXXXXXXXXXX=Account:{Id=XXXXXXXXXXXXXXXXXX, Name=Account 1}, 
    YYYYYYYYYYYYYYYYYY=Account:{Id=YYYYYYYYYYYYYYYYYY, Name=Account 2}, 
    ZZZZZZZZZZZZZZZZZZ=Account:{Id=ZZZZZZZZZZZZZZZZZZ, Name=Account 3}, 
    ...
}

你现在可以使用其 ID 查找 Account 对象。此外,如果你想要一组唯一 ID,可以调用 Map 类的 keySet() 函数,如下所示:

System.debug(accounts.keySet());

在调试日志中看起来像这样:

11:23:21:010 USER_DEBUG [15]|DEBUG|{XXXXXXXXXXXXXXXXXX, YYYYYYYYYYYYYYYYYY, ZZZZZZZZZZZZZZZZZZ, ...}

当你需要查询以获取记录并在代码中重复访问它时,这非常有用。