2013-07-30 1 views
1

Если у меня есть URL-адрес, который может принимать большое количество параметров, которые я тогда хочу смешивать и сопоставлять «на лету», чтобы создавать SQL-запросы чтобы вернуть результаты ...Какой шаблон проектирования следует использовать для получения параметров запроса и объединения их для создания отфильтрованного SQL-запроса

Какие шаблоны проектирования я мог бы рассмотреть, чтобы создать фильтры из параметров?

пример:

mySite.com?name=tom & цвета = красный & размера = большой & и т.д.

требуемый выход SQL * выбрать из туЬаЫх где имени = Том и цвет = красный и размера = большой;

Это мелочи в малом, но когда у вас есть большой набор переменных параметров, поступающих с панели фильтров, которая включает в себя даты и строки запроса соответствия и т. Д., И вы хотите аккуратно и тщательно собирать их в sql-запросы, все время проверки и очистка данных, все может получить err .. verbose. Я закончил тем, что написал тон методов фильтра стиля if/else, который немного кошмар для обслуживания.

+0

Вы можете уточнить ваш сценарий, пожалуйста? В частности, можете ли вы более подробно указать фильтр создания из части param. Что касается построения запросов, вы можете использовать [Объект запроса] (http://martinfowler.com/eaaCatalog/queryObject.html). – Gordon

+0

Не можете ли вы просто заполнить карту именем и значением параметра? – stan0

+0

Чтобы уточнить ... базу данных sql, состоящую из нескольких таблиц, связанных через внешние ключи. большое количество параметров, переданных через url, большинство из которых являются необязательными. Мне нужно смешивать и сопоставлять эти параметры в sql (включая объединения и т. Д.), Прежде чем, наконец, передать сгенерированный SQL-файл, который будет выполнен, и результаты будут возвращены. @Rex предлагает шаблон декоратора в своем ответе, который выглядит многообещающим, я должен сказать. Я мог бы начать с базового запроса и «украсить» различные условия, извлеченные из URL-адреса, на базовый запрос, возможно ... –

ответ

0

для подобных сценариев, мне нравится использовать узор декоратора, где вы можете динамически создавать/смешивать «ингредиенты».

я думаю, что википедия действительно есть хороший пример этого (изготовление сценария кофе): http://en.wikipedia.org/wiki/Decorator_pattern

+0

Итак, начните с базового запроса, который затем украсит больше условий для запроса? –

+0

да, вид. для сложных сценариев, таких как объединения и т. д., может потребоваться другой базовый класс для каждого типа объединений. и сделать его легким в использовании, возможно, вы хотите смешать его с фасадными и заводскими узорами – Rex

Смежные вопросы