根據(jù)項目需求,我們需要動態(tài)配置數(shù)據(jù),所以在SOQL語句中,我們要獲得所有的字段,然后找到了下面的解決方案,具體參考下面的代碼:
public String getFieldsSOQL(String objectName){
String selects = '';
// Get a map of field name and field token
Map<String, Schema.SObjectField> fMap = Schema.getGlobalDescribe().get(objectName.toLowerCase()).getDescribe().Fields.getMap();
list<string> selectFields = new list<string>();
if (fMap != null) {
for (Schema.SObjectField ft : fMap.values()) { // loop through all field tokens (ft)
Schema.DescribeFieldResult fd = ft.getDescribe(); // describe each field (fd)
selectFields.add(fd.getName());
}
}
if (!selectFields.isEmpty()) {
for (string s:selectFields) {
selects += s + ',';
}
if (selects.endsWith(',')) {
selects = selects.substring(0,selects.lastIndexOf(','));
}
}
if (selects == null || selects == '') {
selects = 'id';
}
return selects;
}
通過下面的代碼可以得到字段拼接的字符串,在Apex中使用的時候需要拼接SOQL語句,參考如下的用法:
String selects = getFieldsSOQL();
String query = 'SELECT '+selects +' FROM Lead';
List<Lead> leadList = Database.getQueryLocator(query);