Use sObjects

学习目标

  • 描述sObjects和Salesforce记录之间的关系。
  • 创建并使用特定的sObject变量。
  • 将通用对象强制转换为特定对象。

使用sobject

因为Apex与数据库紧密集成,所以您可以直接从Apex访问Salesforce记录及其字段。Salesforce中的每一条记录在Apex中本机表示为一个sObject。例如,Acme account记录对应于Apex中的account sObject。可以在用户界面中查看和修改的Acme记录字段也可以直接在sObject上读取和修改。

下表列出了Acme帐户示例记录的一些填充字段。Account sObject是Account记录的抽象,将Account字段信息作为对象保存在内存中。

表1。已检索记录的帐户对象

Account 字段
Id001D000000JlfXe
NameAcme
Phone(415)555-1212
NumberOfEmployees100

每个Salesforce记录在插入Salesforce之前都表示为一个sObject。同样,当从Salesforce检索到持久化记录时,它们存储在一个sObject变量中。
Salesforce中的标准和自定义对象记录映射到Apex中的sObject类型。以下是Apex中用于标准对象的一些常见sObject类型名称。

  • Account
  • Contact
  • Lead
  • Opportunity

如果您在组织中添加了自定义对象,请使用Apex中自定义对象的API名称。例如,名为商品的自定义对象对应于Apex中的商品对象。

创建sObject 变量

要创建sObject,需要声明一个变量并将其分配给sObject实例。变量的数据类型为sObject类型。
下面的示例创建Account类型的sObject变量,并将其分配给名为Acme的新帐户。

Account acct = new Account(Name='Acme');

sObject 和字段名

Sobject的名称对应于相应标准或自定义对象的API名称。类似地,sObject字段的名称对应于相应字段的API名称
对象和字段的API名称可能与其标签不同。例如,“雇员”字段有一个雇员标签,在帐户记录页面上显示为雇员,但其API名称为NumberOfEmployees。要访问Apex中的此字段,需要使用字段的API名称:NumberOfEmployees。

以下是用于自定义对象和自定义字段的API名称的一些规则的要点。

对于自定义对象和自定义字段,API名称始终以_c后缀结尾。对于自定义关系字段,API名称以_r后缀结尾。例如:

带有商品标签的自定义对象具有Merchandise__c的API名称 .
标签为Description的自定义字段的API名称为 Description__c.
带有项目标签的自定义关系字段的API名称为 Items__r.

此外,标签中的空格将替换为API名称中的下划线。例如,雇员资历的自定义字段名的API名称为雇员资历。

找到对象和字段名

要查找在Apex中使用的标准对象及其字段的名称,请参阅Salesforce和Lightning Platform的对象参考。

对于自定义对象,请在组织中查找对象和字段API名称。从“设置”中,在“快速查找”框中输入对象,然后选择对象,然后单击对象的名称。

创建sObjects 并添加字段

在插入Salesforce记录之前,必须先在内存中将其创建为sObject。与任何其他对象一样,sObjects是使用新操作符创建的:

Account acct = new Account();

API对象名称成为Apex中sObject变量的数据类型。在本例中,Account是acct变量的数据类型。

acct变量引用的帐户为空,因为我们尚未填充其任何字段。有两种方法可以添加字段:通过构造函数或使用点表示法。

添加字段的最快方法是将它们指定为构造函数中的名称-值对。例如,此语句创建一个新的account sObject并用字符串值填充其名称字段

Account acct = new Account(Name='Acme');

Name字段是accounts唯一必需的字段,这意味着必须先填充它,然后才能插入新记录。但是,您也可以为新记录填充其他字段。此示例还添加了电话号码和员工人数。

Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);

Alternatively, you can use the dot notation to add fields to an sObject. The following is equivalent to the previous example, although it takes a few more lines of code.

Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '(415)555-1212';
acct.NumberOfEmployees = 100;

使用泛型sObject数据类型

通常,在处理sObject时,使用特定的sObject数据类型,例如标准对象的Account或称为Book的自定义对象的Book__c。但是,当您不知道方法正在处理的sObject类型时,可以使用泛型sObject数据类型。

使用泛型sObject数据类型声明的变量可以引用任何Salesforce记录,无论它是标准对象记录还是自定义对象记录。

在这里插入在这里插入图片描述图片描述
此示例显示如何将通用sObject变量分配给任何Salesforce对象:一个帐户和一个名为Book__c的自定义对象。

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强制转换为Account。

// 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;

告诉我更多。。。

与特定的Sobject类型不同,只能通过newObject()方法创建泛型Sobject。此外,只能通过put()和get()方法访问泛型sObject的字段。

在本单元中,您学习了什么是对象以及如何使用它们。但是,创建sObject不会将其作为记录持久保存在数据库中。要将sObject保存为记录并使用它执行其他操作,请使用数据操作语言(DML)。要检索记录,请使用Salesforce对象查询语言(SOQL)。查看后面的单元以了解DML和SOQL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值