Apex - SOSL
每个企业或应用程序都将搜索功能作为基本要求之一。 为此,Salesforce.com 提供了两种使用 SOSL 和 SOQL 的主要方法。 让我们在本章中详细讨论 SOSL 方法。
SOSL
跨对象和跨字段搜索文本字符串将使用 SOSL 完成。 这是 Salesforce 对象搜索语言。 它具有跨多个对象搜索特定字符串的能力。
SOSL 语句计算为 sObject 列表,其中每个列表包含特定 sObject 类型的搜索结果。 结果列表始终按照 SOSL 查询中指定的顺序返回。
SOSL 查询示例
考虑一个业务案例,其中我们需要开发一个可以搜索指定字符串的程序。 假设,我们需要在账单对象的客户名称字段中搜索字符串"ABC"。 代码如下 −
首先,您必须在账单对象中创建一条客户名称为"ABC"的记录,以便我们在搜索时可以获得有效的结果。
// 程序在所有对象中搜索给定字符串 // 保存 sObject 泛型类型返回结果的列表 List<list<SObject>> invoiceSearchList = new List<List<SObject>>(); // SOSL 查询将在账单对象的客户名称字段中搜索"ABC"字符串 invoiceSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice_c (Id,APEX_Customer_r.Name)]; // 打印返回结果 System.debug('Search Result '+invoiceSearchList); // 现在假设,您想在两个对象中搜索字符串"ABC", // 即账单和帐户。 那么这个查询就像这样: // 程序在账单和帐户对象中搜索给定的字符串, // 如果需要,您可以指定更多对象,创建一个名称为 ABC 的帐户。 // 保存 sObject 泛型类型返回结果的列表 List<List<SObject>> invoiceAndSearchList = new List<List<SObject>>(); // SOSL 查询将在账单和帐户对象的字段中搜索"ABC"字符串 invoiceAndSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name), Account]; // 打印返回结果 System.debug('Search Result '+invoiceAndSearchList); // 该列表将保存 Invoice 对象的返回结果 APEX_Invoice__c [] searchedInvoice = ((List<APEX_Invoice_c>)invoiceAndSearchList[0]); // 该列表将保存 Account 对象的返回结果 Account [] searchedAccount = ((List<Account>)invoiceAndSearchList[1]); System.debug('Value of searchedInvoice'+searchedInvoice+'Value of searchedAccount' + searchedAccount);
SOQL
这与 SOQL 几乎相同。 您可以使用它一次仅从一个对象中获取对象记录。 您可以编写嵌套查询,也可以从您正在查询的父对象或子对象中获取记录。
我们将在下一章探讨 SOQL。