sObject对象的定义

Salesforce中的标准对象或自定义对象在Apex中使用时被称作“sObject”。sObject对象的一个实例相当于Salesforce中的一条记录。

比如:Account代表了“客户”对象,Contact代表了“联系人”对象。

在Apex中使用sObject对象

用new关键字可以建立sObject对象,并初始化某些字段。

Account acc = new Account(Name='test name', NumberOfEmployees=200);

在代码中可以用“.”来连接对象和字段。

Account acc = new Account();

acc.Phone = '12345678';
acc.Name = 'test name';

API名字

每个对象和字段都有一个唯一的名字,这个名字被称为API名字(API Name)。

比如“客户”的API名字是“Account”,“名字”字段的API名字是“Name”,“创建人”字段的API名字是“CreatedBy”。

后缀

对于自定义对象和字段,它们的API名字必须以“__c”结尾。

比如:有一个“地址”自定义对象,其API名字是“Address__c”而不能是“Address”

当一个字段的类型是自定义关系类型,那么该字段的后缀不用“__c”,而用“__r”。

对于外部对象,其API名字以“__x”结尾。

sObject泛型

所有的对象都是sObject类型,所以当创建任何一个对象时,可以声明为sObject类型。

sObject obj1 = new Account();
sObject obj2 = new Student__c();

上面的代码建立了一个“Account”(标准对象)和“Student__c”(自定义对象)实例。

sObject类型可以转换为某一对象类型,反之则不行。

另外,新建sObject类型的实例只能通过函数newSObject(),而不能通过new关键字。

sObject sObj = Schema.getGlobalDescribe().get('Account').newSObject();
// 这里还是需要声明创建的sObject类型,比如这里的“Account” // sObject obj = new sObject(); // 错误的用法

sObject的权限

一般情况下,Apex代码在运行时是不考虑当前用户对对象和字段的权限的,匿名代码段除外。

如果想让Apex代码在执行的时候考虑当前用户的权限,可以调用Schema.DescribeSObjectResult和Schema.DescribeFieldResult类中的功能。

代码示例

// 使用Schema.DescribeSObjectResult类的方法来检查
Schema.DescribeSObjectResult objectDescribe = Example_Object__c.SObjectType.getDescribe(); // 检查该对象是否可以被创建
Boolean isCreateable = objectDescribe.isCreateable(); // 检查该对象是否可以被更新
Boolean isUpdateable = objectDescribe.isUpdateable(); // 检查当前用户对该对象是否有权限
Boolean isAccessible = objectDescribe.isAccessible(); // 检查该对象是否可以被删除
Boolean isDeletable = objectDescribe.isDeletable(); // 直接用Schema.SObjectType来检查
Boolean isCreateable = Schema.SObjectType.Example_Object__c.isCreateable();
Boolean isUpdateable = Schema.SObjectType.Example_Object__c.isUpdateable();
Boolean isAccessible = Schema.SObjectType.Example_Object__c.isAccessible();
Boolean isDeletable = Schema.SObjectType.Example_Object__c.isDeletable();
// 使用Schema.DescribeFieldResult类的方法来检查
Schema.DescribeFieldResult fieldDescribe = Example_Object__c.SObjectType.fields.Example_Field__c.getDescribe(); Boolean isCreateable = fieldDescribe.isCreateable();
Boolean isUpdateable = fieldDescribe.isUpdateable();
Boolean isAccessible = fieldDescribe.isAccessible(); // 直接使用Schema.sObjectType来检查
Boolean isCreateable = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isCreateable();
Boolean isUpdateable = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isUpdateable();
Boolean isAccessible = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isAccessible();

在Apex中使用sObject的更多相关文章

  1. 在 Apex 中得到 sObject 的信息

    Salesforce 的数据模型是基于 sObject 的.在 Apex 中,所有的标准对象.自定义对象都是继承自 sObject 的. 关于在 Apex 中得到 sObject 的信息,我们要基于两 ...

  2. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

    注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...

  3. 在 Apex 中使用合并统计查询

    SOQL 中的合并统计查询 在 SOQL 中,我们可以使用一系列函数来进行合并统计查询.它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似. 官方文档 Apex 中使用合并统计查询 ...

  4. Apex 中 PageReference 的使用

    PageReference类的作用 PageReference类位于Apex的System命名空间下.它可以用来在Apex代码中将页面跳转到指定的位置.在开发的时候,我们也可以向其中添加任意的参数. ...

  5. Approval Process 在 Apex 中的使用

    Approval Process(批准过程)简介 批准过程是一个复杂的业务过程.详细的内容可以参考官方文档. 英文版 中文版 官方trailhead模块 在Apex中调用Approval Proces ...

  6. Apex 中文件夹相关的单元测试

    Salesforce 中的文件夹 在 Salesforce 中,我们可以建立各种文档.报表.仪表板.电子邮件模板等.它们都被保存在相应的文件夹中. Salesforce 的后端将这些文件夹保存为 Fo ...

  7. Apex 中操作用户和组

    用户和组概述 Salesforce中对于用户的定义主要体现于两个对象:用户(User)和组(Group).组的成员可以是用户也可以是另一个组. Salesforce中的组可以有多种表示方法,比如队列( ...

  8. Apex 中的自定义迭代器

    迭代器 迭代器(iterator)可以遍历一个集合变量中的每个元素.Apex提供了Iterator接口来让开发者实现自定义的迭代器. Iterator接口 Iterator接口定义了两个函数: has ...

  9. Apex 中 DML 进阶知识小结

    DML 选项 在 DML 语句执行的时候可以设置选项.这些选项用 DML.Options 类来表示. 完整的介绍在官方文档中. 在建立一个 DML.Options 实例之后,可以使用 setOptio ...

随机推荐

  1. 基于DobboX的SOA服务集群搭建

    本人第一次发博客,有什么不对的地方希望各位批评指正,我就不把文章copy过来了,直接上有道笔记的链接,希望各位喜欢. 第一部分: 准备工作 第二部分: dubbox的安装和使用 第三部分: RESTf ...

  2. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  3. Shell-13--while和until

  4. 命令行下查看python和numpy的版本和安装位置

    命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...

  5. 排名前 16 的 Java 工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  6. Django--CSRF 跨站请求伪造

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  7. 使用FluentMigrator进行数据库迁移

    介绍 在开发的过程中,经常会遇到数据库结构变动(表新增.删除,表列新增.修改.删除等).开发环境.测试环境.正式环境都要记性同步:如果你使用EF有自动迁移的功能,还是挺方便的.如果非EF我们需要手工处 ...

  8. glide使用

    glide在github地址:https://github.com/bumptech/glide 1.添加依赖(最好看官网,因为有时候添加依赖的会有轻微改动,版本也会一直更新) repositorie ...

  9. SQOOP安装部署

    1.环境准备 1.1软件版本 sqoop-1.4.5 下载地址 2.配置 sqoop的配置比较简单,下面给出需要配置的文件 2.1环境变量 sudo vi /etc/profile SQOOP_HOM ...

  10. Linux 学习手记(1):命令行BASH的基本操作

    1. Shell 是什么 Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令.操作传递给操作系统底层. Shell一般分为:图形化Shell(GUI).命令行Shel ...