salesforce 零基础学习(五十八)通过sObject的field返回其对应的基础类型

项目中有时候会要求通过sObject的Field的type类型返回其对应的基本类型,然后对其进行相关的处理,创建sObject的field可以选择的type类型是固定多的。

上述类型可以转换成几种基本类型:Boolean、Date、Datetime、Double、Integer、String、Time。

1.封装Primitive枚举类:封装基本类型

 1 public enum Primitive {
 2     TYPE_BOOLEAN, 
 3     TYPE_DATE, 
 4     TYPE_DATETIME, 
 5     TYPE_DOUBLE, 
 6     TYPE_INTEGER, 
 7     TYPE_STRING, 
 8     TYPE_TIMEOFDAY,
 9     TYPE_UNKNOW
10 }

2.创建PrimitiveHelper帮助类:通过字段的DataType返回相关的基本类型

 1 public without sharing class PrimitiveHelper {
 2 
 3     public static Primitive getPrimitiveTypeByField(String sObjectName,String fieldName) {
 4         Schema.DisplayType fieldType = getFieldDisplayType(sObjectName,fieldName);
 5         if(fieldType == Schema.Displaytype.BOOLEAN){
 6             return Primitive.TYPE_BOOLEAN;
 7         }
 8         else if(fieldType == Schema.Displaytype.BASE64 || fieldType == Schema.Displaytype.COMBOBOX || fieldType == Schema.Displaytype.EMAIL ||
 9                 fieldType == Schema.Displaytype.ENCRYPTEDSTRING || fieldType == Schema.Displaytype.ID || fieldType == Schema.Displaytype.MULTIPICKLIST ||
10                 fieldType == Schema.Displaytype.PHONE || fieldType == Schema.Displaytype.PICKLIST || fieldType == Schema.Displaytype.REFERENCE ||
11                 fieldType == Schema.Displaytype.STRING || fieldType == Schema.Displaytype.TEXTAREA || fieldType == Schema.Displaytype.URL){
12             return Primitive.TYPE_STRING;
13         }
14         else if(fieldType == Schema.Displaytype.CURRENCY || fieldType == Schema.Displaytype.DOUBLE || fieldType == Schema.Displaytype.PERCENT){
15             return Primitive.TYPE_DOUBLE;                       
16         }
17         else if(fieldType == Schema.Displaytype.INTEGER){
18             return Primitive.TYPE_INTEGER;                      
19         }
20         else if(fieldType == Schema.Displaytype.DATE){
21             return Primitive.TYPE_DATE;
22         }
23         else if(fieldType == Schema.Displaytype.DATETIME){
24             return Primitive.TYPE_DATETIME;
25         }
26         else {
27             throw new MyException('无对应的基础类型');
28         }
29     }
30     
31     
32     private static Schema.DisplayType getFieldDisplayType(String sObjectName,String fieldName) {
33         List<Schema.DescribeSObjectResult> sObjectTypes = Schema.describeSObjects(new String[]{sObjectName});
34         if(sObjectTypes == null || sObjectTypes.size() == 0) {
35             throw new MyException('无此Object Name');
36         }
37         Schema.DescribeSObjectResult sObjectDescribeResult = sObjectTypes.get(0);
38         Map<String,Schema.SObjectField> objectFieldMap = sObjectDescribeResult.fields.getMap();
39         Schema.SObjectField objectField = objectFieldMap.get(fieldName);
40         if(objectField == null) {
41             throw new MyException('无此Field Name');
42         }
43         Schema.DescribeFieldResult fieldResult = objectField.getDescribe();
44         
45         return fieldResult.getType();
46     }
47     
48     private class MyException extends Exception{}
49 }

效果:

1.存在的相关字段的基本类型

2.不存在的字段的结果显示

总结:此篇用于通过sObject的字段来判断此字段属于哪种基本类型,然后可以通过的基本类型对其进行相关操作。有错误的地方欢迎留言。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏抠抠空间

MySQL之表的约束

一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的...

2726
来自专栏程序员的SOD蜜

使用CTE解决复杂查询的问题

最近,同事需要从数个表中查询用户的业务和报告数据,写了一个SQL语句,查询比较慢: Select S.Name, S.AccountantCode, ( Se...

2086
来自专栏数据和云

Oracle性能优化-子查询到特殊问题

编辑手记:前面我们介绍常用的子查询优化方法,但总有一些情况时在规律之外。谨慎处理方能不掉坑。 前文回顾: 性能优化之查询转换 - 子查询类 将SQL优化做到极...

2997
来自专栏数据库

mysql数据操作语句

?imageMogr2/blur/1x0/quality/75|watermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2...

1805
来自专栏醉程序

学习笔记 | MySQL 数据类型

1043
来自专栏乐沙弥的世界

Oracle Scheduler Chain 的用法

      Oracle CHAIN,也就是链,是将一串需要完成的作业连在一起,根据每一个步骤完成的不同结果来确定下面的哪一个动作需要被完成。实际上也就是if ...

611
来自专栏Jackson0714

【T-SQL基础】01.单表查询-几道sql查询题

3329
来自专栏乐沙弥的世界

簇表及簇表管理(Index clustered tables)

--========================================

703
来自专栏乐沙弥的世界

dbms_xplan之display函数的使用

DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用 displ...

742
来自专栏james大数据架构

你真的会玩SQL吗?无处不在的子查询

你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接、外连接 你真的会玩SQL吗?三范式、数据完整性 你真...

1797

扫码关注云+社区