Я хочу задать условие для list.add в файле ~impl, созданном Mapstruct. Что я должен делать?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Я хочу задать условие для list.add в файле ~impl, созданном Mapstruct. Что я должен делать?

Сообщение Anonymous »

Интересно, можно ли применить условное выражение при преобразовании сущности в dto с помощью Mapstruct.
Существует множество результатов поиска по свойству, но я не могу его найти, когда мне интересно. p>
В приведенном ниже примере кода в файле StudentMenuMapperImpl.java
list.add( toDto( StudentMenu ))
I хочу дать условное выражение для
Я знаю, как переопределить toDto в интерфейсе StudentMenuMapper.
Но я хочу знать другой простой способ. (например, аннотация)
В качестве альтернативы, можно ли вернуть значение null из функции toDto с помощью @AfterMapping и @BeforeMapping?
[StudentMenuDto.java]
public class StudentMenuDto {
private Long id;
private Long parentId;
List childStudentMenuList;
}

[GenericMapper.java]
public interface GenericMapper {
D toDto(E entity);
List toDto(List entityList);
}

[StudentMenuMapper.java]
@Mapper
public interface StudentMenuMapper extends GenericMapper {
StudentMenuMapper INSTANCE = Mappers.getMapper(StudentMenuMapper.class);

@Override
StudentMenuDto toDto(StudentMenu entity);
}

[StudentMenuMapperImpl.java] — файл реализации, созданный Mapstruct
@Component
public class StudentMenuMapperImpl implements StudentMenuMapper {

@Override
public List toDto(List entityList) {
if ( entityList == null ) {
return null;
}

List list = new ArrayList( entityList.size() );
for ( StudentMenu studentMenu : entityList ) {
/* [AS-IS] */
list.add( toDto( studentMenu ) );
/* [TO-BE] I want to add various conditional statements like this
if(studentMenu.getId != 1){
list.add( toDto( studentMenu ) );
}
*/
}

return list;
}

@Override
public StudentMenuDto toDto(StudentMenu entity) {

if ( entity == null ) {
return null;
}

StudentMenuDto studentMenuDto = new StudentMenuDto();

studentMenuDto.setId( entity.getId() );
studentMenuDto.setParentId( entityParentStudentMenuId( entity ) );
studentMenuDto.setChildStudentMenuList( toDto( entity.getChildStudentMenuList() ) );

return studentMenuDto;
}

private Long entityParentStudentMenuId(StudentMenu studentMenu) {
if ( studentMenu == null ) {
return null;
}
StudentMenu parentStudentMenu = studentMenu.getParentStudentMenu();
if ( parentStudentMenu == null ) {
return null;
}
Long id = parentStudentMenu.getId();
if ( id == null ) {
return null;
}
return id;
}
}


Подробнее здесь: https://stackoverflow.com/questions/732 ... apstruct-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»