根据对象名和字段集名动态获取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());
}