在Apex中使用sObject
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的更多相关文章
- 在 Apex 中得到 sObject 的信息
Salesforce 的数据模型是基于 sObject 的.在 Apex 中,所有的标准对象.自定义对象都是继承自 sObject 的. 关于在 Apex 中得到 sObject 的信息,我们要基于两 ...
- salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...
- 在 Apex 中使用合并统计查询
SOQL 中的合并统计查询 在 SOQL 中,我们可以使用一系列函数来进行合并统计查询.它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似. 官方文档 Apex 中使用合并统计查询 ...
- Apex 中 PageReference 的使用
PageReference类的作用 PageReference类位于Apex的System命名空间下.它可以用来在Apex代码中将页面跳转到指定的位置.在开发的时候,我们也可以向其中添加任意的参数. ...
- Approval Process 在 Apex 中的使用
Approval Process(批准过程)简介 批准过程是一个复杂的业务过程.详细的内容可以参考官方文档. 英文版 中文版 官方trailhead模块 在Apex中调用Approval Proces ...
- Apex 中文件夹相关的单元测试
Salesforce 中的文件夹 在 Salesforce 中,我们可以建立各种文档.报表.仪表板.电子邮件模板等.它们都被保存在相应的文件夹中. Salesforce 的后端将这些文件夹保存为 Fo ...
- Apex 中操作用户和组
用户和组概述 Salesforce中对于用户的定义主要体现于两个对象:用户(User)和组(Group).组的成员可以是用户也可以是另一个组. Salesforce中的组可以有多种表示方法,比如队列( ...
- Apex 中的自定义迭代器
迭代器 迭代器(iterator)可以遍历一个集合变量中的每个元素.Apex提供了Iterator接口来让开发者实现自定义的迭代器. Iterator接口 Iterator接口定义了两个函数: has ...
- Apex 中 DML 进阶知识小结
DML 选项 在 DML 语句执行的时候可以设置选项.这些选项用 DML.Options 类来表示. 完整的介绍在官方文档中. 在建立一个 DML.Options 实例之后,可以使用 setOptio ...
随机推荐
- 音视频编解码——YUV视频格式详解
一.YUV 介绍 YUV是一种颜色编码方方式,通常由彩色摄像机进行取像,然后把取得的彩色图像信号经过分色.分别放大校正后得到RGB,再经过矩阵变换得到亮度信号Y和两个色差信号B-Y(即U).R-Y(即 ...
- 正确使用AES对称加密
正确使用AES对称加密 经常我看到项目中有人使用了对称加密算法,用来加密客户或项目传输中的部分数据.但我注意到开发 人员由于不熟悉原理,或者简单复制网上的代码示例,有导致代码存在安全风险. 我经常遇到 ...
- Testing - 软件测试知识梳理 - 探索性测试
定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...
- win10 + cuda8.0 + caffe SSD + vs2015 + python3
一.下载 git clone https://github.com/runhang/caffe-ssd.git cd caffe-ssd 1. 修改 build_win.cmd if !PYTHON_ ...
- Jenkins 集成Sonar代码质量扫描
Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...
- 13-部署traefik-ingress插件
Kubernetes traefik ingress安装 Ingress简介 如果你还不了解,ingress是什么,可以先看下我翻译的Kubernetes官网上ingress的介绍Kubernetes ...
- 2-4 完整Todolist案例
在2-3 的基础上继续,综合前面的Todolist编写一个完整的案例,实现基本的输入内容,添加内容,点击删除内容 稍微讲解54行代码 splice()的用法
- 【Object类、常用API】
Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类 ...
- Java异常处理设计(三)
接着上一篇讲. 一个异常日志处理的例子: 抛出异常的地方为: try{ ... ...//省略N行 }catch( Exception e){ throw new RuntimeException ( ...
- 关于小窗滑动,父级body也跟随滑动的解决方案
需求:当前页面是信息列表,所以高度由内容自动填充, 所以页面可以上下滑动,加载更多, 但是下发物料一栏又为一个列表 所以做了一个弹窗框,因为是列表所以高度自然又是不可控的,所以给了一个最大高度,当超出 ...