dropwizard: Можно ли дополнительно отобразить параметр в зависимости от его присутствия в наборе результатов? - PullRequest
0 голосов
/ 02 октября 2019

Я использую Dropwizard 1.2.1 (я знаю, что существует более поздняя версия) для проекта. У меня очень распространенная ситуация.

У меня есть приложение, в котором пользователь регистрируется, используя свой номер телефона. Это создает запись в моей таблице user только с номером телефона.

Теперь, когда пользователь входит в следующий раз, я хочу получить информацию о пользователе. Этот сценарий применим для существующего пользователя, у которого уже заполнены его / ее другие данные (например, имя).

Так что мой бэкэнд выполняет select * from user where phoneNumber= <phoneNumber>, и маппер пытается отобразить весь пользовательский объект примерно так:

return new User(resultSet.getString("first_name"), resultSet.getString("middle_name"), resultSet.getString("last_name"), resultSet.getString("phone_number"), resultSet.getString("nationality"), resultSet.getString("mpin"));

Теперь маппер, естественно, в случае новой регистрации,не нашел бы ничего, кроме номера телефона в БД. Таким образом, остальные вызовы getString() не будут выполнены. Как мне этого избежать и сказать get whatever field is not null and form the object and return it to me.

Я вижу документацию для jdbi3: http://jdbi.org/#_column_mappers, но я не уверен, решит ли это проблему. Я еще не пробовал это, поскольку у меня есть некоторые проблемы, понимающие это. Поэтому хотелось получить обратную связь, если это правильное решение или есть другой способ сделать это.

Заранее спасибо.

[РЕДАКТИРОВАТЬ]: я знаю, что есть метод resultSet.findColumn('first_name'), который я могу использовать, чтобы найти, существует ли столбец, прежде чем пытаться получить его. Но это сделает этот код довольно хреновым, если я начну делать это для каждого поля в User mapper. Отсюда усилия, чтобы найти другое решение.

...