【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的。salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量。接下来主要讲解一下sObject以及单表的简单DML操作。
详细了解sObject以及DML操作请参看官方PDF文档或查看下方链接进行参考:
https://developer.salesforce.com/trailhead/en/module/apex_database
一)sObject
通过上面的描述,可能很多人都会云里雾里,没有理解什么是sObject.看一下官方的定义:sObject指的是存储在Force.com 平台数据库中的任何的对象。sObject变量代表一行数据并且在Apex中只能使用SOAP API对象名称中声明的一行数据。比如在Force.com 数据库中有Account数据表,表相对应的API 名称为Account(图1),则
Account account1 = new Account();//account1则为一个sObject对象。

图1 图2
Force.com 平台数据库操作不像平时大家比较熟知的数据库,比如Oracle,SqlServer,MySql等。
当在salesforce中新建一个数据表时,操作步骤如下所示:
1.使用账号登录自己的salesforce主页,点击setup-->点击左侧Build-->点击Create-->点击Objects,或者在上方搜索栏直接搜索Objects(图2);
2.点击右侧主页面信息的New Custom Object;
3.在Label中输入要建立的数据库的名称,比如创建Student,则在Label中输入Student,鼠标指向Object Name 则自动填充Student,点击save按钮(图3);
4.创建Student表成功(图4),其API Name被平台自动设置为Student__c 。

图3

图4
现在主要看一下图4,当Student表创建成功的时候,API Name 赋值为Student__c,这个则为Student表的sObject对象,即Student__c对象为Student表的一行记录的引用。当我想查询或者操作Student表数据时,可以通过Student__c对象操作。举个例子,当Student表中有一个Name字段时,其Name字段的API Name 为Name__c,则:
|
1
2
3
|
Student__c student = new Student__c();student.Name__c = 'zero.zhang';insert student; |
通过上面三行代码则执行了student表一行数据的插入。相信通过上述例子大家对于sObject有了一个较好的了解。
既然了解了sObject是什么,如何操作,接下来考虑如何创建数据表中的列。创建数据表中的列通过如下步骤:
1)通过点击图2中的Objects,找到Label为Student的表,并点击进入(图5);
2)拖动到下方Custom Fields & Relationships模块点击new(图6),其中图6中上面Standard Fields为系统创建的列,详情参见官方文档;
3)选择Data Type,即数据列的类型,这些类型以后会单独讲解,选择Text类型,然后下一步;
4)Field Label 输入Name,鼠标移动到Field Name则自动输入Name,Length设置为50,(图7)接下来均为默认操作next,直到点击save按钮;
5)保存以后可以在Custom Fields & Relationships模块中看到新建的Name列,其API Name为Name__c(图8),如果想要建立多个列,请重复操作以上步骤。

图5

图6 图7

图8
二)SOQL
SOQL全称为Salesforce Object Query Language.通过SOQL语句可以操作sObject的增删改查等操作。下面还是以上面Student表进行举例。
Student表的API Name 为Student__c,所以在apex中,只要对Student__c对象进行相应的DML操作,即为对Student数据表操作。
注:apex代码通过操作表以及列对应的API Name来对表进行增删改查操作处理。
查询语句返回List<sObject>数据,查询语句也可以进行相应的复杂处理,例如进行where查询,include,exclude,limit等等操作,此部分内容太多,此篇只讲述最基本的查询操作,以后篇会详细探讨SOQL语句细节以及多表关联的查询等操作。
where语句中经常伴随着参数传递,比如查询学生表中姓名为zhangsan的个数等,如果采用拼串很容易造成错误,并且代码不易阅读。Apex提供了一种便捷的方式,使用 ':' 符号来声明查询语句中使用的变量,类似于Java中的PreparedStatement。
查询有两种方式,一种为通过[select ...]方式来进行查询,此种方式不利于SQL语句的拓展,故不推荐此种方式;
第二种方式为通过构造查询字符串,通过Database.query(queryString)方法来检索数据,此种方式灵活性扩展性强,推荐此种方式。
另外注意的是:在Force.com平台数据库中,查询不能使用'*'符号代表查询全部字段,如果查询全部字段需要全部列出来。
Student表表结构如下图所示,分为系统自定义的列以及用户自己声明的列。

查询语句例子如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//查询列表String args1 = '%zhang%';String args2 = 'zhangsan';List<Student__c> students = [select Id,Name__c from Student__c where Name__c like :args1 limit 10000];//查询名称含zhang的学生列表/*上述语句等同与:String query = 'select Id,Name__c from Student__c where Name__c like :args1 limit 10000';List<Student__c> students = Database.query(query);*///查询表数据条数String countQuery = 'select count(Id) from Student__c where Name__c = :args2 ';//查询名称为zhangsan的学生个数Integer studentsCount = Database.countQuery(countQuery); |
注意:salesforce对查询记录条数以及DML操作次数均有严格的限制:查询条数一次不能超过50000条,DML操作一次不能超过10000次,如果超过限制则抛异常。如果需要大量的进行DML操作,请使用批处理方式进行数据处理。
本篇所列出的SOQL操作只是冰山一角,SOQL在开发中所占比重很大,所以希望本篇起到抛砖引玉作用,供初学者入门。初学者如果想要深入详细了解此部分内容请详细查看官方文档进行学习sObject以及SOQL相关知识。如果对本篇内容描述有错误的地方,请及时指正,欢迎大家共同探讨,谢谢。下一篇将会讲解多表关联下的SOQL以及SOQL查询深入知识。
【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)的更多相关文章
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- salesforce 零基础开发入门学习(八)数据分页简单制作
本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于 ...
- salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...
- 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable 本篇知识参考:https://developer.salesforce.com/trailhead/for ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量 ...
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...
随机推荐
- Hibernate 自动更新表出错 More than one table found in namespace
报错:Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table f ...
- Docker 部署 ELK 收集 Nginx 日志
一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- jQuery补充之jQuery扩展/form表单提交/滚动菜单
jQuery扩展 为了避免重复造轮子,能高效使用别人的代码,所以有了扩展. jQuery扩展有两种方式: 自执行函数方式 定义函数,并执行函数. 自执行函数: (function(jq){ jq.ex ...
- django模板--循环控制标签
循环控制标签 在django模板中可以通过循环控制标签对列表进行迭代,循环控制标签又称for标签,语法格式如下: {% for value in value_list %} {{ value }} { ...
- iOS-图形绘制(全)
画阴影: CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(contex ...
- MMC.EXE应用程序错误 应用程序无法正常启动(0XC0000043)
一.Windows+R 输入 regedit.exe ①打开注册表: HKEY_LOCAL_MACHINE“"SOFTWARE""Classes""C ...
- rest_framework之ModelViewSet、路由控制、序列化组件快速搭建项目雏形
以UserInfo表登陆接口为例 ModelViewSet的用法十分简单,定义一个视图类,指定一个模型表,指定一个序列化类即可帮我们完成增删改查等功能 示例: # 视图层 from app01.MyS ...
- python return逻辑判断表达式(21)
一.return逻辑判断表达式 and and:遇假则假,所以前面为假就不执行和判断后面直接返回假:前面为真则继续判断执行后面直到表达式结束或者出现假为止; # !usr/bin/env python ...
- [学习笔记] 在Eclipse中添加用户库 Add User Libraries ,在项目中引用用户库
如果还没有安装Eclipse, 则请参考前文: [学习笔记] 下载.安装.启动 Eclipse(OEPE) 添加用户库 本文主要介绍在项目中直接使用第三方库的情况.就是把第三方的jar文件直接放到某 ...
- idea2019开发第一个java程序HelloWorld
用idea2019开发第一个java程序: (idea破解不在本讲义范围之内) 新手建议忽略此部分,先把eclipse用熟.技术是一样的.idea缺省配置是黑色的,很晃眼,可以(Files/setti ...