Implementing the custom query logic
If we take a look at the implementation of the fflib_SObjectSelector.selectSObjectById
base class method (at the time of writing this book), it is quite simple and gives a template as to the way we can implement custom Selector methods; it also highlights other base class methods we can use:
public List<SObject> selectSObjectsById(Set<Id> idSet) { assertIsAccessible(); return Database.query(buildQuerySObjectById()); } private String buildQuerySObjectById() { return String.format( 'SELECT {0} FROM {1} WHERE id in :idSet ORDER BY {2}', new List<String> {getFieldListString(),getSObjectName(),getOrderBy()}); }
The getFieldListString
method calls the getSObjectFieldList
and getSObjectFieldSetList
methods implemented in the preceding code. It basically takes the SObjectField
lists that result from these methods and builds a single comma-delimited list of fields ready to be inserted into the SOQL query string. Also, note...