У меня есть запрос в Объект доступа к данным DAOComments, который объединяет таблицу пользователей и таблицу комментариев, а затем сохраняет результат в Объект передачи данных DTOComments:
private static final String SQL_FIND_WITH_USERNAME =
"SELECT u.username, comments.* FROM users u JOIN comments
ON u.id = comments.id ORDER BY created_date DESC LIMIT 10;";
Тем не менее, DTOComments не имеет свойства «имя пользователя», так как это свойство DTOUsers.
Вариант 1
Поэтому я решил использовать Map<String, DTOComments>
В этом случае карта имеет username as KEY, DTOComments as VALUE.
Ноэтот подход потерпит неудачу, потому что я забочусь о ПОРЯДКЕ результата, и поэтому мой запрос возвращает результат в порядке убывания.Если я итерирую карту на странице JSP, порядок будет непоследовательным, поэтому моя страница JSP будет выводить комментарий в случайном порядке.
(Даже если порядок не имеет значения, я не знаю, может ли JSTLпокажите КЛЮЧ карты. Хотя я знаю отображение ЗНАЧЕНИЯ)
Вариант 2
Я мог бы поместить результат запроса в ArrayList<DTOComments>
Но я не знаюНе вижу места для хранения "username"
сейчас.Может быть, я могу добавить новое свойство к DTOComments, например private String username;
хмм ... это нарушит концепцию наличия DTO, поскольку оно СЛЕДУЕТ отражать схему таблицы базы данных.
Опция 3
Создать новый класс, содержащий всю необходимую мне информацию (т. Е. Имя пользователя + свойства DTOComments).
Но только потому, что мне нужно еще одно свойство "username "в дополнение к свойствам DTOComments, создание нового класса кажется неправильным.
Может кто-нибудь дать мне совет, как я могу хранить всю информацию, возвращенную запросом выше, более организованным способом?