部分内容参考自 https://www.cnblogs.com/zero-zyq/category/798149.html
There are a few different ways you can make this update. You could do this in Apex code, or by creating a Flow, or by creating another workflow rule.
DML语句:
查找:[queryString] 添加:insert 修改:update 删除:delete 添加或修改:upsert
查找:Database.query() 添加:Database.insert() 修改:Database.update() 删除:Database.delete() 添加或者修改:Database.upsert()
两者区别:
如何选择DML和Database方法这两种方式
a.普通增删改查,遇到异常就抛出的可以选择DML语句,毕竟写起来方便
b.如果需要用到批处理,需要使用Database类
c.在批处理中,遇到错误继续下一条处理的使用Database类的方法
d.需要用到事务,对操作有可能进行回滚操作的使用Database类的方法
1. public static sObject[] query(String queryString)
String fetchAccount = 'select Id from Account limit 10';
List accountList = Database.query(fetchAccount);
system.debug(JSON.serialize(accountList));
注意:使用List接收查询结果,如果查询结果为空的情况下,上面的accountList并不是null,而是()代表长度为空,所以如果判断当前查询是否有值,不能只通过accountList == null来判断,而是需要通过accountList.size() == 0来判断
2.public static Database.SaveResult insert(sObject recordToInsert, Boolean allOrNone)
public static Database.SaveResult[] insert(sObject[] recordsToInsert, Boolean allOrNone)
这两个方法功能与DML语句中的insert相似,区别为多了一个allOrNone参数,当设置成false的情况下,允许部分插入成功,当设置成true的情况下,其功能和DML的insert相同。当需求中要求可以部分插入成功,将不成功的信息显示出来情况下,使用Database.insert是最好不过了,Database.SaveResult类用于保存插入,修改的记录是否成功,如果失败情况下的失败信息等讯息。此种方式可以常常用于批处理操作中。
Database类的方法可以实现数据库的事务处理,主要通过两个方法实现:
public static System.Savepoint setSavepoint():此方法用于设置一个事务的保存点,返回类型为Savepoint类型。
public static Void rollback(System.Savepoint databaseSavepoint):此方法用于回滚到指定的保存点。
例:
SavePoint sp1 = Database.setSavePoint();
List goodsList;
Goods__c goods = new Goods__c();
goods.GoodsName__c = 'goodsNameTest';
goods.GoodsPrice__c = 200;
goods.GoodsCostPrice__c = 100;
insert goods;
goodsList = [select Id,GoodsName__c,GoodsPrice__c,GoodsCostPrice__c from Goods__c where Id = :goods.Id];
if(goodsList != null && goodsList.size() > 0) {
Goods__c currentGoods = goodsList.get(0);
system.debug('rollback以前 : ' + JSON.serializePretty(currentGoods));
}
Database.rollback(sp1);
goodsList = [select Id,GoodsName__c,GoodsPrice__c,GoodsCostPrice__c from Goods__c where Id = :goods.Id];
if(goodsList != null && goodsList.size() > 0) {
Goods__c currentGoods = goodsList.get(0);
system.debug('rollback以后 : ' + JSON.serializePretty(currentGoods));
} else {
system.debug('rollback 以后,不存在刚才添加的记录');
}
SELECT
TYPEOF What
WHEN Account THEN Phone
ELSE Name
END
FROM Event
WHERE CreatedById IN
(
SELECT CreatedById
FROM Case
)
AggregateResult[] groupedResults = [SELECT AVG(Amount) aver FROM Opportunity];
Object avgAmount = groupedResults[0].get('aver');
· new只适用于执行insert和update的trigger操作时并且类型为before的时候,才可以使用new返回列表;
· newMap只适用于before update,after insert以及after update的trigger操作时,才可以使用newMap返回map集合;
· old以及oldMap只适用于update和delete操作时,才可以使用old以及oldMap
此页面的页面名称: {!$CurrentPage.Name}
此页面的URL:{!$CurrentPage.URL}
通过在URL中对此页面传递一个参数,key为paramName,此paramName对应的value为:{!$CurrentPage.Parameters.paramName}
注:paramName是url中传递的参数名字。
2.$Label:通过此变量可以获取custom labels中配置的自定义label,自定义label分成静止的内容以及动态的内容。如:
此种方式为动态形式的label value显示:
此种方式为静态形式的label value显示:
注:Label.后面的名字是自定义的Label名称。
3.$ObjectType:类似apex中的SObjectType类的功能:通过此对象可以获取类或者字段的meta data,比如label名称等.项目中有的时候需要获取字段的label信息,通过此种方式获取的label信息可以直接实现国际化功能,而不用自己创建多套内容来维护国际化;如:
Account的Label :
Account表中的字段为Name的Label :
4.$Page :类似apex中的pageReference功能,绑定在标签等上面实现链接跳转功能。如:
跳转到其他页面
注:此处的pageName是自定义的visualforce page的名字。
5.$Resource:此变量经常用到,我们有时候需要引入某个css文件或者js文件,或者显示某些文件图片等,需要先上传到static resources中,然后通过$Resource.file_name即可引入,如:
字体比较
字体比较
6.$User:获取当前登陆的用户信息:
邮箱地址为:{!$User.Email}