Implementing custom query logic
Take a look at the implementation of the selectSObjectsById
base class method we have used so far in this chapter. The following buildQuerySObjectById
method code gives us an indication of how we implement custom Selector methods; it also highlights the newQueryFactory
base class method usage:
public List<SObject> selectSObjectsById(Set<Id> idSet) {
return Database.query(buildQuerySObjectById());
}
private String buildQuerySObjectById() {
return newQueryFactory().
setCondition('id in :idSet').
toSOQL();
}
The newQueryFactory
method exposes an alternative object-oriented way to express a SOQL query. It follows the fluent design model with its methods, making code less verbose. For more information on this approach, see https://en.wikipedia.org/wiki/Fluent_interface.
The instance of fflib_QueryFactory
returned by this method is preconfigured with the object, fields, sort order, and any...