zoukankan      html  css  js  c++  java
  • 69、schema的相关方法

    public class SObjectSchema {
        
        public void testSchema(){
            //获取SObject的token
            //1、先获取所有token,然后通过key获取需要的token
            //2、直接获取指定的sObject的token
            
            //1、通过获取全部描述信息,然后get方法获取需要的指定字段的描述信息
            Map<String,Schema.SObjectType> allSObjectTypeDescribes = Schema.getGlobalDescribe();
            Schema.SObjectType merchandiseType1 = allSObjectTypeDescribes.get('Merchandise__c');
            
            //2、直接获取指定sObject的token
            Schema.SObjectType merchandiseType2 = Merchandise__c.SObjectType;
            
            /*
             * 获取Schema.DescribeSObjectResult
             * 1、通过token的getDescribe方法**/
            Schema.DescribeSObjectResult merchandiseResult = merchandiseType1.getDescribe();
            
            /*
             * 2、通过System命名空间下的Schema的方法
             * */
            List<String> sObjectTypes = new String[]{'Merchandise__c'};
            List<Schema.DescribeSObjectResult> merchandiseResult1 = Schema.describeSObjects(sObjectTypes);
            System.debug(merchandiseResult.getLabel());
            System.debug('sObject的API的名称为' + merchandiseResult.getName());
            System.debug('Student表是否为自定义的Object :' + (merchandiseResult.isCustom() ? '是':'否'));   
            //---------------------------------------//
            List<Schema.ChildRelationship> childRelationResult = merchandiseResult.getChildRelationships();
            for(Schema.ChildRelationship child : childRelationResult){
                System.debug('merchandise子Object的关联名称:'+ child.getRelationshipName());
            }
            /**
             * 以下操作位获取field的元信息结果,以Education__c为例
             * 两种操作方式:
             * 1、通过DescribeSObjectResult的fields方法获取token,然后再通过getDescribe方法获取
             * 2、直接获取字段然后使用getDescribe方法
             * */
            Map<String,SObjectField> sObjectFieldMaps = merchandiseResult.fields.getMap();
            SObjectField educationField = sObjectFieldMaps.get('Name');
            Schema.DescribeFieldResult educationFieldResult = educationField.getDescribe();
            Schema.DisplayType educationType = educationFieldResult.getType();
            System.debug('education字段类型为:'+educationType);
            System.debug('education字段API名称为:'+educationFieldResult.getName());
            System.debug('education字段label名称为:'+educationFieldResult.getLabel());
            //------------------------------//
            List<Schema.PicklistEntry> educationListValues = educationFieldResult.getPicklistValues();
            Map<String,Object> educationListValueMap = new Map<String,Object>();
            for(Schema.PicklistEntry educationListItem : educationListValues){
                educationListValueMap.put(educationListItem.getValue(),
                new Map<String,Object>{
                    'value'=>educationListItem.getValue(),
                    'isActive'=>educationListItem.isActive(),
                    'isDefaultValue'=>educationListItem.isDefaultValue(),
                    'label'=>educationListItem.getLabel()
                });
            }
            Set<String> educationListValuesSet = educationListValueMap.keySet();
            System.debug('educations values'+educationListValuesSet);
            
        }
    }

    运行后的结果如下所示:

  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/weizhen/p/6439222.html
Copyright © 2011-2022 走看看