FYI
After taking a closer look, it looks like this is do-able with the existing API.
The crux of the matter is that although the DynamicCriteria class focuses on WHERE and ORDER BY, I think it's actually more general than that. It doesn't enforce a strict separation between static and dynamic pieces.
That is, as far as my tests have shown me, you can use a blank static part, and build the whole sql in code; that is, DynamicCriteria is misnamed/misleading, and should be called DynamicSql.
I will work on cleaning up the documentation, and some related implementation details.
- John.