There is Campaign Entity and for that, I have CampaignRepository which have this functions
You should be able to do all of the above with the following repository method:
List findCampaigns(Date fromCreationDate, Date toCreationDate, int offset, Integer limit) {
if (fromCreationDate != null) add criteria...
if (toCreationDate != null) add criteria...
if (limit != null) add limit...
}
This is how I do it and it works very well.