iBatis будет работать в этом случае.Мы сделали точно такой же сценарий, как вы описали, используя iBatis для создания динамических запросов adhoc на основе выбора пользователя из пользовательского интерфейса.Сложность возникла из-за того, что число доступных пользовательских элементов увеличивалось от страницы к странице, но это выполнимо.
Hibernate - это полнофункциональный ORM, который является еще одним очевидным вариантом, но его более сложно использовать.Вот несколько ссылок, чтобы помочь:
Динамические запросы с Hibernate
StackOverflow вопрос о динамических запросах с Hibernate
Итак, явыбрал бы iBatis в качестве первого выбора или Hibernate в качестве решения.Я думаю, что со сложностью индивидуальное решение слишком легко превратится в много запутанного, вложенного кода, если вы сначала действительно не продумываете весь дизайн.Предполагая, конечно, что требования не меняются, как вы идете.
Мне кажется, iBatis позволил бы вам лучше организовать SQL-код в процессе и обеспечить гибкость в дизайне вместо будущих изменений.ПО МОЕМУ МНЕНИЮ.