Salesforce基础-Apex常用通用代码

文章介绍了如何根据对象名动态获取FieldSet、查询自定义字段值、获取可读写字段类型、处理日期格式、获取对象名以及转换数据结构的相关技术,涉及Apex代码和Salesforce平台功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据对象名和字段集名动态获取FieldSet
public static List<Schema.FieldSetMember> getFieldSet (String sobjectName, String fieldSetName) {
        Map<String, Schema.SObjectType> GlobalDescribeMap = Schema.getGlobalDescribe();
        Schema.SObjectType SObjectTypeObj = GlobalDescribeMap.get(sobjectName);
        Schema.DescribeSObjectResult DescribeSObjectResultObj = SObjectTypeObj.getDescribe();
        Schema.FieldSet fieldSetObj = DescribeSObjectResultObj.FieldSets.getMap().get(fieldSetName);
        return fieldSetObj.getFields();
}
根据对象名动态查询所有自定义字段值
public static String getSObjectFieldsSOQL(String objectName){
    Map<String, Schema.SObjectField> sobjFields = Schema.getGlobalDescribe().get(objectName).getDescribe().fields.getMap();
    String sql = 'SELECT ';
    for(String field : sobjFields.keySet()){
    	if(field.containsIgnoreCase('__c')){
    		sql += (field + ',');
    	}
    }
    return sql.substringBeforeLast(',') + ' FROM ' + objectName;
}
根据对象名动态获取所有可读写字段及其字段类型
public static Map<String, String> getAllWritableFieldTypeMap(String objectName){
    Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
    Schema.SObjectType sObjectType = schemaMap.get(objectName);
    Map<String, Schema.SObjectField> fieldMap = sObjectType.getDescribe().fields.getMap();
    Map<String, String> allWritableFieldTypeMap = new Map<String, String>();
    for (String fieldName: fieldMap.keySet()) {
        Schema.DescribeFieldResult fieldResult = fieldMap.get(fieldName).getDescribe();
        String fieldType = String.valueOf(fieldResult.getType());
        if (fieldResult.isUpdateable()) {
            allWritableFieldTypeMap.put(fieldName, fieldType);
        }
    }
    return allWritableFieldTypeMap;
}
根据字符长度获取随机字符
public static String getRandomString(Integer length){
    Blob blobKey = Crypto.generateAesKey(128);
    String key = EncodingUtil.convertToHex(blobKey);
    return key.subString(0, length > 32 ? 32 : length);
}
根据记录类型的Name或DeveloperName获取记录类型ID
Id recordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByName().get('个人客户').getRecordTypeId();
System.debug(LoggingLevel.INFO, '*** recordTypeId: ' + recordTypeId);

Id recordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Person').getRecordTypeId();
System.debug(LoggingLevel.INFO, '*** recordTypeId: ' + recordTypeId);
根据当前用户所在区域locale格式化显示日期时间
public static String formatDatetimeLocale(Datetime dt){
    return ' ' + dt.format('yyyy-MM-dd\'T\'HH:mm:ss\'z\'',UserInfo.getLocale()) + ' ';
}
根据ID获取对象名
public static String getSobjName(Id id){
    return id.getSobjectType().getDescribe().getName();
}
将列表数据根据指定的分隔符转变为字符串
List<String> abcdList = new List<String>{
	'A',
	'B',
	'C',
	'D'
};
String abcdString = String.join(abcdList, ';');
System.debug(LoggingLevel.INFO, '*** abcdString: ' + abcdString);
查询重复的数据
for (AggregateResult ar: [SELECT Name, Count(Id) FROM Account GROUP BY Name HAVING Count(Id) > 1] ) {
	String name = (String)ar.get('Name');
	System.debug(LoggingLevel.INFO, '*** name: ' + name);
}
将SOQL查询结果放在Map
Map<ID, Contact> m = new Map<ID, Contact>([SELECT Id, LastName FROM Contact]);
获取SOQL查询结果的所有记录Id
Set<Id> contactIds = (new Map<ID,Contact>([select id from Contact])).keySet();
SObject记录转为Map
for (Contact con: [SELECT FirstName,LastName from Contact]) {
	Map<String,Object> conMap = new Map<String,Object>(con.getPopulatedFieldsAsMap());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值