一.元信息(数据库中的数据以外的信息)
1.日语解释
Schema 名前空間は、スキーマメタデータ情報を操作するためのクラスとメソッドを提供します。Schema.*
は暗黙的にインポートされますが、Schema 名前空間要素を使用するときに、管理されていないコードの項目
と名前が競合する場合は完全修飾する必要があります。
二.元信息主要介绍下边两方面
1.sObject(分析):
①.sObjectのメタデータのトークンを取得する。
Account a = new Account();
Schema.sObjectType t = a.getSObjectType();
②.「getDescribe()」メソッドを使用して、sObjectのメタデータを取得する。
Schema.DescribeSObjectResult dsr = Account.sObjectType.getDescribe();
dsr.getName(); //オブジェクトのAPI名称
dsr.getLabel(); //オブジェクトのラベル名称
・相関メソッド:
public Boolean isCustom() //判断当前sObject为自定义Obj还是标准的Obj。自定义返回true,标准返回false。
public Boolean isUpdateable() //判断当前用户是否可以修改此sObject,可以返回true,不可以返回false。
public Boolean isDeletable(): //判断当前用户是否可以删除此sObject,可以删除判断true,否则返回false。
public Boolean isCreateable(): //当前用户是否可以创建,可以返回true,否则返回false
public Boolean isAccessible() //当前用户是否可以访问相关的field,可以返回true,否则返回false
以上测试结果:
③.sObjectのメタデータのfield情報を取得する。
Schema.DescribeSObjectResult d = Account.sObjectType.getDescribe();
Map<String, Schema.FieldSet> FsMap = d.fieldSets.getMap();
2.sObjectField
①.sObjectの特定項目のトークンの取得
Schema.DescribeFieldResult F = Account.Industry.getDescribe();
②.sObjectの全部項目のtokenの取得
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();
Schema.SObjectField goodsName = fieldMap.get('Name');
・相関メソッド:
public Schema.sObjectField getController() //获取当前字段描述结果的token;
public Object getDefaultValue() //获取字段默认值;
public String getCalculatedFormula() //返回此字段指定的公式,此字段无公式则返回null字符串;
public String getLabel() //返回field的label名称;
public Schema.sObjectField getSObjectField() //获取当前字段描述结果的token;
public Schema.DisplayType getType() //返回字段类型,返回类型为枚举类型;
public Boolean isAutoNumber() //判断此字段是否为autoNumber类型,是返回true,否则返回false;
public Boolean isCustom() //判断此字段是否为自定义类型字段,是返回true,否则返回false;
public String getName() //返回字段的api名称;
public List<Schema.PicklistEntry> getPicklistValues() //如果此字段为PickList类型字段,可以通过此方法返回PicklistEntry实例对象用来获取PickList的value。
3.关联关系的两个表通过下边方法获取信息。
// 获取子关系列表,即sObject中有外键描述的列表
・public List<Schema.ChildRelationship> getChildRelationships()
①以上两个表中Session_Speaker__c外键关联于Session__c中,所以通过对Session__c调用此方法可以获取Session_Speaker__c的信息
例:
4.getGlobalDescribe() 方法
すべての sObject 名 (キー) の対応付けを、組織で定義された標準オブジェクトおよびカスタムオブジェクトのsObject トークン (値) に返します。
例:
①.Map<String,Schema.SObjectType> allSObjectTypeDescribes = Schema.getGlobalDescribe();
Schema.SObjectType studentType = allSObjectTypeDescribes.get('Session__c');
②.直接で指定のsObjectのtokenを取得する
Schema.SObjectType studentType1 = Student__c.SObjectType;
5.describeTabs() 方法
実行ユーザが利用可能な標準アプリケーションとカスタムアプリケーションの情報を返します。
public static List<Schema.DescribeTabSetResult> describeTabs()
public with sharing class testController {
public static void getAllAccountTest() {
// Get tab set describes for each app
List<Schema.DescribeTabSetResult> tabSetDesc = Schema.describeTabs();
// Iterate through each tab set describe for each app and display the info
for(DescribeTabSetResult tsr : tabSetDesc) {
String appLabel = tsr.getLabel();
System.debug('Label: ' + appLabel); // DEBUG|Label: Sales
System.debug('Logo URL: ' + tsr.getLogoUrl()); // DEBUG|Logo URL: https://yourInstance.salesforce.com/img/seasonLogos/2014_winter_aloha.png
System.debug('isSelected: ' + tsr.isSelected()); // DEBUG|isSelected: true
String ns = tsr.getNamespace();
if (ns == '') {
System.debug('The ' + appLabel + ' app has no namespace defined.'); // DEBUG|The Sales app has no namespace defined
} else {
System.debug('Namespace: ' + ns); //
}
// Display tab info for the Sales app
if (appLabel == 'Sales') {
List<Schema.DescribeTabResult> tabDesc = tsr.getTabs();
System.debug('-- Tab information for the Sales app --'); // DEBUG|-- Tab information for the Sales app --
for(Schema.DescribeTabResult tr : tabDesc) {
System.debug('getLabel: ' + tr.getLabel()); // DEBUG|getLabel: Accounts
System.debug('getColors: ' + tr.getColors()); //
System.debug('getIconUrl: ' + tr.getIconUrl()); //
System.debug('getIcons: ' + tr.getIcons()); //
System.debug('getMiniIconUrl: ' + tr.getMiniIconUrl()); //
System.debug('getSobjectName: ' + tr.getSobjectName()); // DEBUG|getSobjectName: Account
System.debug('getUrl: ' + tr.getUrl()); // DEBUG|getUrl: https://yourInstance.salesforce.com/001/o
System.debug('isCustom: ' + tr.isCustom()); // DEBUG|isCustom: false
}
}
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。