salesforce 零基础学习(五十六)实现getById
本来想通过template封装DAO中的getById,结果template中无法选择$(object_name),所以此种想法打消了,直接封装成一个Helper类,方便以后项目中如果有类似需要可以使用。
public virtual with sharing class ObjectDAOHelper {
/*
* @param sObjectName sobject api name
* @param id sobject record id
* return 返回此记录ID,如果不存在返回null
*/
public static sObject getById(String sObjectName,String id) {
String queryStr = 'select ';
List<Schema.DescribeSObjectResult> sObjectResults = Schema.describeSObjects(new List<String>{sObjectName});
if(sObjectResults == null || sObjectResults.size() == 0) {
return null;
}
Schema.DescribeSObjectResult sObjectResult = sObjectResults.get(0);
Map<String,SObjectField> maps = sObjectResult.fields.getMap();
Integer i = 0;
for(Schema.SObjectField objectField : maps.values()) {
Schema.DescribeFieldResult fieldResult = objectField.getDescribe();
if(fieldResult.isAccessible()) {
queryStr += fieldResult.getName();
if(i != maps.keySet().size() - 1) {
queryStr += ',';
}
i++;
}
}
queryStr += ' from ' + sObjectName + ' where Id = :id';
system.debug('queryStr : ' + queryStr);
List<sObject> objects = Database.query(queryStr);
if(objects == null || objects.size() == 0) {
return null;
}
return objects.get(0);
}
}
运行代码:
结果展示:
queryStr : select Id,OwnerId,IsDeleted,Name,RecordTypeId,CreatedDate,CreatedById,LastModifiedDate,LastModifiedById,SystemModstamp,LastViewedDate,LastReferencedDate,GoodsName__c,GoodsBrand__c,GoodsPrice__c,GoodsCostPrice__c,GoodsPicture__c,Status__c,Goods_Code_Unique__c,GoodsDescribe__c,GoodsProfit__c,No__c from Goods__c where Id = :id {
"attributes" : {
"type" : "Goods__c",
"url" : "/services/data/v38.0/sobjects/Goods__c/a052800000Ejg1vAAB"
},
"Id" : "a052800000Ejg1vAAB",
"OwnerId" : "00528000002JyclAAC",
"IsDeleted" : false,
"Name" : "a052800000Ejg1v",
"RecordTypeId" : "01228000000U1u0AAC",
"CreatedDate" : "2016-12-13T07:16:03.000+0000",
"CreatedById" : "00528000002JyclAAC",
"LastModifiedDate" : "2016-12-13T07:16:03.000+0000",
"LastModifiedById" : "00528000002JyclAAC",
"SystemModstamp" : "2016-12-13T07:16:03.000+0000",
"GoodsName__c" : "测试商品1",
"GoodsBrand__c" : "其他",
"GoodsPrice__c" : 200.000000,
"GoodsCostPrice__c" : 100.000000,
"Goods_Code_Unique__c" : "GC00001",
"GoodsDescribe__c" : "测试描述",
"GoodsProfit__c" : 100.00,
"No__c" : "2016-142"
}
总结:简单的helper类以及方法,篇中有问题的欢迎指出,不懂得欢迎留言。
salesforce 零基础学习(五十六)实现getById的更多相关文章
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...
- salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- salesforce零基础学习(一百零五)Change Data Capture
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- salesforce 零基础学习(六十八)http callout test class写法
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
随机推荐
- Fis3的前端工程化之路[三大特性篇之资源定位]
Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...
- JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- React 入门教程
React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...
- 在 Laravel 中使用图片处理库 Integration/Image
系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...
- 自定义Inspector检视面板
Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [Sys ...
- 缓存、队列(Memcached、redis、RabbitMQ)
本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...
- css text-fill-color与text-stroke讲解
顾名思义"text-fill-color"就是文字填充颜色而"text-stroke"就是文字描边.还别说,两个属性可以制作出各种炫酷的文字效果,不过IE系列都 ...
- Linux基础介绍【第六篇】
定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...