由modelmapper制作的Spring DTO返回所有内容为null

Posted

技术标签:

【中文标题】由modelmapper制作的Spring DTO返回所有内容为null【英文标题】:Spring DTO made by modelmapper returns everything null 【发布时间】:2021-12-07 16:17:54 【问题描述】:

当我将返回值从 User 更改为 Optional 时,我的 UserResponseDTO 返回 null,当我将 Optional 更改为 User 时它可以正常工作,如何解决?数据库保存了我在 postman 中输入的所有值

USER dao保存方法

 public Optional<User> saveUser(User user) 
    jdbcTemplate.update("INSERT INTO usr(username,password,email,country,gender) VALUES( ?, ?, ?, ?, ?)", user.getUsername(), user.getPassword()
            ,user.getEmail(),user.getCountry(),user.getGender().getId());
    return Optional.ofNullable(user);

USER服务保存方法

public Optional<User> save(User user) 
    if(validate(user.getEmail()))
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.setRole(Role.USER);
        user.setStatus(Status.ACTIVE);
        Optional<User> userSaved = userDao.saveUser(user);
        return userSaved;
    
    log.warn("U entered the wrong email");
    return Optional.ofNullable(user);

用户控制器保存方法

@ApiOperation(value = "getting the user data from request body and saving it to database")
@PostMapping(value = "")
public ResponseEntity<UserResponse> saveUser(@RequestBody UserRequest userRequest) 
    User userUntilSave = modelMapper.map(userRequest, User.class);
    Optional<User> user = userService.save(userUntilSave);
    UserResponse userResponse = modelMapper.map(user, UserResponse.class);
    return new ResponseEntity<>(userResponse, HttpStatus.CREATED);

邮递员屏幕 enter image description here

【问题讨论】:

尝试使用 Optional.of() 而不是 Optional.ofNullable() ***.com/questions/31696485/… User user = userService.save(userUntilSave).orElseThrow(SomeException::new); 怎么样?没点映射Optional 【参考方案1】:

ModelMapper 不直接作用于可选项,您需要设置转换器。来看看

ModelMapper handling java 8 Optional<MyObjectDto> fields to Optional<MyObject>

【讨论】:

以上是关于由modelmapper制作的Spring DTO返回所有内容为null的主要内容,如果未能解决你的问题,请参考以下文章

ModelMapper:在运行时映射抽象类

Java学习记录--ModelMapper的使用

spring和mybatis集成,自动生成modelmapper,增加mybatis分页功能

mapstruct 实体转换及List转换,@Mapper注解转换

mapstruct 实体转换及List转换,@Mapper注解转换

ModelMapper 一文读懂