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设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
 
随机推荐
- 【.net 深呼吸】跨应用程序域执行程序集
			
应用程序域,你在网上可以查到它的定义,凡是概念性的东西,大伙儿只需要会搜索就行,内容看了就罢,不用去记忆,更不用去背,“名词解释”是大学考试里面最无聊最没水平的题型. 简单地说,应用程序域让你可以在一 ...
 - Android ViewPager打造3D画廊
			
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...
 - ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
			
由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...
 - MFC中如何画带实心箭头的直线
			
工作中遇到话流程图的项目,需要画带箭头的直线,经过摸索,解决:思路如下: (1) 两个点(p1,p2)确定一个直线,以直线的一个端点(假设p2)为原点,设定一个角度 (2)以P2为原点得到向量P2P1 ...
 - CSS 3学习——文本效果和@font-face
			
文本效果 关于文本效果,这里仅仅记录得到大多数浏览器支持的几个属性,分别是: text-overflow text-shadow word-break word-wrap text-overflow ...
 - 基于window7+caffe实现图像艺术风格转换style-transfer
			
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
 - C#日志
			
参考页面: http://www.yuanjiaocheng.net/Entity/first.html http://www.yuanjiaocheng.net/Entity/jieshao.htm ...
 - ASP.NET中画图形验证码
			
context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...
 - enote笔记法使用范例(2)——指针(1)智能指针
			
要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...
 - java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis
			
A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技术:313596790freemaker模版技术 ,0个代码不用写 ...