14-3: Create Collections to Filter the Query

DEX450 - Introductions and Overview

📄 第 375 页 🎬 视频课程

课程章节介绍

同学们,今天我们来学习如何在Salesforce中创建集合来过滤查询任务。这个任务的目标是编写代码,创建一个查询过滤器,然后循环SOQL的结果,最后更改代码以调用一个新的类处理程序方法的逻辑。我们还会测试这个新的触发逻辑。 首先,我们需要创建一个查询,这个查询将带回认证尝试的记录。我们可以使用SOQL(Salesforce Object Query Language)来实现这一点。SOQL是一种类似于SQL的查询语言,专门用于查询Salesforce中的数据。 假设我们有一个对象叫做“认证尝试”(Certification_Attempt__c),我们想要查询所有状态为“成功”的记录。我们可以这样写SOQL查询: ```apex List successfulAttempts = [SELECT Id, Name, Status__c FROM Certification_Attempt__c WHERE Status__c = '成功']; ``` 这个查询会返回所有状态为“成功”的认证尝试记录,并将它们存储在`successfulAttempts`这个列表中。 接下来,我们需要循环这个列表,对每一条记录进行处理。我们可以使用一个`for`循环来实现这一点: ```apex for (Certification_Attempt__c attempt : successfulAttempts) { // 在这里处理每一条记录 System.debug('认证尝试名称: ' + attempt.Name); } ``` 在这个循环中,我们简单地打印出每一条认证尝试的名称。你可以根据实际需求在这里添加更多的处理逻辑。 现在,假设我们想要将处理逻辑封装到一个新的类中。我们可以创建一个新的Apex类,比如叫做`CertificationAttemptHandler`,并在其中定义一个方法来处理这些记录: ```apex public class CertificationAttemptHandler { public static void processSuccessfulAttempts(List attempts) { for (Certification_Attempt__c attempt : attempts) { // 在这里处理每一条记录 System.debug('认证尝试名称: ' + attempt.Name); } } } ``` 然后,我们可以在原来的代码中调用这个新的方法: ```apex List successfulAttempts = [SELECT Id, Name, Status__c FROM Certification_Attempt__c WHERE Status__c = '成功']; CertificationAttemptHandler.processSuccessfulAttempts(successfulAttempts); ``` 这样,我们就将处理逻辑封装到了一个独立的类中,使得代码更加模块化和易于维护。 最后,我们需要测试这个新的触发逻辑。你可以创建一个测试类,使用`Test.startTest()`和`Test.stopTest()`方法来模拟触发器的执行,并验证结果是否符合预期。 这就是我们今天的内容,希望你们能够理解并掌握如何创建集合来过滤查询任务。如果有任何问题,随时提问!