使用 sObject
使用 sObject
客户字段 | 值 |
---|---|
Id | 001D000000JlfXe |
名称 | Acme |
电话 | (415)555-1212 |
NumberOfEmployees | 100 |
每条 Salesforce 记录在插入 Salesforce 之前,都表示为一个 sObject。同样,当从 Salesforce 检索持久化记录时,这些记录将存储在 sObject 变量中。
Salesforce 中的标准和自定义对象记录映射到 Apex 中的 sObject 类型。以下是 Apex 中用于标准对象的一些常见 sObject 类型名称。
- 客户
- 联系人
- 潜在客户
- 业务机会
如果您在组织中添加了自定义对象,请使用 Apex 中自定义对象的 API 名称。例如,名为 Merchandise 的自定义对象对应于 Apex 中的 Merchandise__c sObject。
创建 sObject 变量
要创建 sObject,您需要声明一个变量并为其分配一个 sObject 实例。变量的数据类型是 sObject 类型。
以下示例创建了类型为 Account、名称为 Acme 的 sObject 并将其分配给了 acct
变量。
Account acct = new Account(Name='Acme');
sObject 和字段名称
Apex 引用标准或自定义 sObject,字段用它们的唯一 API 名称。
对象和字段的 API 名称可以不同于其标签名称。例如,员工字段的标签为 Employees,在客户记录页面上显示为 Employees,但其 API 名称为 NumberOfEmployees。要在 Apex 中访问此字段,您需要使用该字段的 API 名称,即 NumberOfEmployees。
以下是自定义对象和自定义字段的 API 名称的使用规则重点。
对于自定义对象和自定义字段,API 名称始终以 __c 后缀结尾。对于自定义关系字段,API 名称以 __r 后缀结尾。例如:
- 标签为 Merchandise 的自定义对象的 API 名称为 Merchandise__c。
- 标签为 Description 的自定义字段的 API 名称为 Description__c。
- 标签为 Items 的自定义关系字段的 API 名称为 Items__r。
此外,标签中的空格替换为 API 名称中的下划线。例如,自定义字段名称 Employee Seniority 的 API 名称为 Employee_Seniority__c。
查找对象和字段名称
要查找 Apex 中使用的标准对象及其字段的名称,请参阅 Object Reference for Salesforce and Lightning Platform(Salesforce 和 Lightning 平台的对象引用)。
对于标准和自定义对象,请在组织中查找对象和字段 API 名称。从“设置”中,单击主页选项卡右侧的对象管理器选项卡,然后单击您的对象名称。
创建 sObject 并添加字段
在插入 Salesforce 记录之前,必须先在内存中创建一个 sObject。与其他对象一样,sObject 也是通过 new
运算符创建的:
Account acct = new Account();
API 对象名称成为 Apex 中 sObject 变量的数据类型。该实例中,Account
(客户)是 acct
变量的数据类型。
Acct
变量引用的客户为空,因为还没有为其填充任何字段。添加字段有两种方法:通过构造器或者使用点记法。
添加字段的快捷方法是在构造器中将它们指定为名称-值对。例如,此语句创建了一个新客户 sObject 并使用字符串值填充名称字段。
Account acct = new Account(Name='Acme');
名称字段是客户的唯一必填字段,因此必须先填充该字段,然后才能插入新记录。但是,您也可以为新记录填充其他字段。此示例还添加了电话号码和员工数量。
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
或者,您可以使用点记法为 sObject 添加字段。以下示例等效于前面的示例,不同的是以下示例需要多几行代码。
Account acct = new Account(); acct.Name = 'Acme'; acct.Phone = '(415)555-1212'; acct.NumberOfEmployees = 100;
处理泛型 sObject 数据类型
使用泛型 sObject 数据类型声明的变量可以引用任意 Salesforce 记录,无论是标准对象记录还是自定义对象记录。
此示例显示如何将任意 Salesforce 对象(例如称为 Book__c 的客户或自定义对象)分配给泛型 sObject 变量。
sObject sobj1 = new Account(Name='Trailhead'); sObject sobj2 = new Book__c(Name='Workbook 1');
相反,使用特定 sObject 数据类型声明的变量只能引用相同类型的 Salesforce 记录。
将泛型 sObject 转换为特定 sObject 类型
在处理泛型 sObject 时,有时需要将 sObject 变量转换为特定 sObject 类型。转换为特定 sObject 类型支持使用点记法访问字段,而泛型 sObject 却不支持。由于 sObject 是所有特定 sObject 类型的父类型,因此您可以将泛型 sObject 转换为特定 sObject。该示例展示了如何将泛型 sObject 转换为客户。
// Cast a generic sObject to an Account Account acct = (Account)myGenericSObject; // Now, you can use the dot notation to access fields on Account String name = acct.Name; String phone = acct.Phone;
了解详细信息...
只能通过 put()
和 get()
方法访问泛型 sObject 的字段。
在本单元中,您学习了什么是 sObject 以及 sObject 的使用方法。但是,创建 sObject 并不会将其作为记录持久保存在数据库中。要将 sObject 保存为记录,并通过 sObject 执行其他操作,请使用 Data Manipulation Language (DML)。要检索记录,请使用 Salesforce 对象查询语言 (SOQL)。查看后续单元,了解 DML 和 SOQL 的更多信息。