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

posted @ 2016-12-20 15:09  zero.zhang  阅读(1265)  评论(2编辑  收藏  举报