×
Apex 编程教程Apex 环境Apex 示例Apex 数据类型Apex 变量Apex 字符串Apex 数组Apex 常量Apex 决策Apex 循环Apex 集合Apex 类Apex 类方法Apex 对象Apex 接口Apex DMLApex 数据库方法Apex SOSLApex SOQLApex 安全性Apex 调用Apex 触发器Apex 触发设计模式Governer Limits调节器限制Apex 批量处理Apex 调试Apex 测试Apex 部署Apex 字符串Apex 数组

Apex SOSL


具有搜索功能是每个业务或应用程序的基本要求之一。为此,Salesforce.com提供了使用SOSL和SOQL的两种主要方法:


SOSL:

在整个对象和字段上搜索文本字符串将通过使用SOSL来完成。这是Salesforce对象搜索语言。它具有在多个对象上搜索特定字符串的能力。

SOSL语句评估sObjects的列表,其中每个列表包含特定sObject类型的搜索结果。结果列表始终以与在SOSL查询中指定的顺序相同的顺序返回。


SOQL:

这与SOQL几乎相同。您可以使用它从一个对象只获取一次对象记录。您可以编写嵌套查询,并从您要查询的父对象或子对象获取记录。

我们将在本章中学习SOSL。我们将在下一章探讨SOQL。


SOSL查询示例

考虑一个商业案例,我们需要开发一个程序,可以搜索指定的字符串。假设,我们想在Invoice对象的Customer Name字段中搜索字符串'ABC'。代码如下:

首先,您必须在Invoice对象中创建一个客户名为“ABC”的记录,以便在搜索时获得有效的结果。

//Program To Search the given string in all Object
//List to hold the returned results of sObject generic type
List> invoiceSearchList = new List>();

//SOSL query which will search for 'ABC' string in Customer Name field of Invoice Object
invoiceSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name)];

//Returned result will be printed
System.debug('Search Result '+invoiceSearchList);

//Now suppose, you would like to search string 'ABC' in two objects, that is Invoice and Account. Then for this query goes like this:
//Program To Search the given string in Invoice and Account object, you could specify more objects if you want, create an Account with Name as ABC.
//List to hold the returned results of sObject generic type
List> invoiceAndSearchList = new List>();

//SOSL query which will search for 'ABC' string in Invoice and in Account object's fields
invoiceAndSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name), Account];

//Returned result will be printed
System.debug('Search Result '+invoiceAndSearchList);

//This list will hold the returned results for Invoice Object
APEX_Invoice__c [] searchedInvoice = ((List)invoiceAndSearchList[0]);

//This list will hold the returned results for Account Object
Account [] searchedAccount = ((List)invoiceAndSearchList[1]);
System.debug('Value of searchedInvoice'+searchedInvoice+'Value of searchedAccount'+searchedAccount);

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)