Вы не можете делать в точности то, что вы просите в Java.
У класса BasicBoardArticle
есть свойства, и они не могут просто исчезнуть из него.Подумайте о коде, который использует этот класс.Он может попытаться сказать "1004".И это правильно, поскольку класс определяет это свойство, а java строго типизирован, поэтому вы не можете динамически добавлять / удалять свойства.
Так что вы можете либо
- изменитькласс (или создать другой класс), чтобы иметь только те поля, которые вам нужны
- , или изменить сериализацию класса так, чтобы она возвращала только те поля, которые вам нужны (или в качестве опции пропустить пустые поля)
- или преобразуйте экземпляр
BasicBoardArticle
, который возвращается в другой класс, который не имеет этих полей
Отдельное отображение в mybatis
Создайте отдельный класс только с теми полями, которые вынеобходимость.Затем создайте для него отдельный resultMap
(если вы используете autoMapping=true
, единственная реальная разница - это тип цели, который вы указали в resultMap
).
Затем вы создаете отдельный запрос в mapper или включаете поля, условно основанные на некотором значении параметра, используя <if>
.
Изменить сериализованную форму
Если selectAll
равноиспользуется только на уровне представления, вы можете настроить сериализацию класса.Либо создайте для него настраиваемый сериализатор и используйте его в контроллере для этой конкретной конечной точки (хотя простого способа сделать это нет, если вы не используете разные типы содержимого запроса).Или настройте Джексон так, чтобы он не возвращал пустые поля, если вы можете себе это позволить для этого класса.
Преобразовать в другой тип
Если результат selectAll
используется не только в слое вида, это может иметь смыслпреобразовать возвращенный BasicBoardArticle
в другой тип, в котором есть только те поля, которые вам нужны.