Я использую 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. Отсюда усилия, чтобы найти другое решение.