salesforce 零基础学习(五十六)实现getById

本来想通过template封装DAO中的getById,结果template中无法选择$(object_name),所以此种想法打消了,直接封装成一个Helper类,方便以后项目中如果有类似需要可以使用。

 1 public virtual with sharing class ObjectDAOHelper {
 2     /*
 3     *    @param sObjectName   sobject api name
 4     *    @param id              sobject record id
 5     *    return 返回此记录ID,如果不存在返回null
 6     */
 7     public static sObject getById(String sObjectName,String id) {
 8         String queryStr = 'select ';
 9         List<Schema.DescribeSObjectResult> sObjectResults = Schema.describeSObjects(new List<String>{sObjectName});
10         if(sObjectResults == null || sObjectResults.size() == 0) {
11             return null;
12         }
13         Schema.DescribeSObjectResult sObjectResult = sObjectResults.get(0);
14         Map<String,SObjectField> maps = sObjectResult.fields.getMap();
15         Integer i = 0;
16         for(Schema.SObjectField objectField : maps.values()) {
17             Schema.DescribeFieldResult fieldResult = objectField.getDescribe();
18             if(fieldResult.isAccessible()) {
19                 queryStr += fieldResult.getName();
20                 if(i != maps.keySet().size() - 1) {
21                     queryStr += ',';
22                 }
23                 i++;
24             }
25         }
26         queryStr += ' from ' + sObjectName + ' where Id = :id';
27         system.debug('queryStr : ' + queryStr);
28         List<sObject> objects = Database.query(queryStr);
29         if(objects == null || objects.size() == 0) {
30             return null;
31         }
32         return objects.get(0);
33     }
34 }

运行代码:

 结果展示:

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类以及方法,篇中有问题的欢迎指出,不懂得欢迎留言。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

Java 实现图片旋转及问题小结

图片旋转 图片旋转作为一个常见功能,实际使用中用处挺多,但是这次实现却遇到了个小问题,记录一二 使用的几个类 Graphics2d AffineTransfo...

1736
来自专栏salesforce零基础学习

salesforce 零基础学习(六十)Wizard样式创建数据

项目中表之间关联关系特别多,比如三个表中A,B,C  C作为主表,A,B作为从表,有时候C表需要创建数据时,同时需要创建A,B两个表的数据,这种情况下,使用Wi...

2399
来自专栏Core Net

C# 处理Word自动生成报告 四、程序处理

4207
来自专栏wOw的Android小站

[Android][Framework] 无障碍快捷方式相关代码

问题:无障碍快捷方式(Accessibility Shortcut)打开不生效。

951
来自专栏码匠的流水账

聊聊zxing的qrcode

core-3.3.1-sources.jar!/com/google/zxing/qrcode/QRCodeWriter.java QRCodeWriter的e...

561
来自专栏ppjun专栏

Android十八章:是时候在你项目用上greenDAO3GreenDao

GreenDao3.1.0使用案例包含(增删查改,升级数据库),3.+版本比2.+更加便捷生成DaoMaster和DaoSession 本文项目地址

643
来自专栏lonelydawn的前端猿区

前端验证码绘制(canvas)

一切尽在代码中 js文件 /** * canvas绘制动画浮动验证码 * code by lonelydawn 2017-04-10 */ var c...

2787
来自专栏木宛城主

火力全开——仿造Baidu简单实现基于Lucene.net的全文检索的功能

Lucene.Net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引...

2737
来自专栏SpringBoot

jTable插件辅助资料

==============================================jTable插件========...

754
来自专栏函数式编程语言及工具

SDP(12): MongoDB-Engine - Streaming

   在akka-alpakka工具包里也提供了对MongoDB的stream-connector,能针对MongoDB数据库进行streaming操作。这个M...

42910

扫码关注云+社区