繁体   English   中英

在 spring 引导中更新实体的最佳方法

[英]The best way to update entity in spring boot

我是 spring 启动的新手,并试图制作我的第一个 api。 我已经使用 FastAPI 框架在 python 上制作了很多 api,但现在我决定研究这项技术。 但是在这里,我遇到了一个问题。 所以我使用 jpa 进行数据库通信,我真的不明白如何正确更新实体的字段。

我已经阅读了很多指南,他们都说更新实体是这样进行的:

    public void updateUserInDatabase(long userId, UserUpdateModel newData) {
        UserEntity user = userRepo.findById(userId).orElseThrow();
        if(newData.getUsername() != null) {
            user.setUsername(newData.getUsername());
        }
        if(newData.getPassword() != null) {
            user.setPassword(newData.getPassword());
        }
    }

但我认为它没有用,因为newData可以有很多字段,所以为了更新一个实体,我需要很多条件。

所以,是的,也许这个问题很愚蠢,但我真的很想理解 XD。 如果你知道答案,请告诉我。 我真的很感激。 先感谢您。

你的问题并不傻,你想让它变得更好,但你已经在做,就像应该做的那样。

但是,如果您不使用 Cassandra 或类似的东西,表中有很多字段可能表明数据库设计存在问题。

您可以使用MapStructModelMapper 之类的实体映射器

模型映射器示例:

ModelMapper mapper = new ModelMapper();
// this will tell ModelMapper to ignore null fields when mapping the source (newData) to the destination (user)
mapper.getConfiguration().setSkipNullEnabled(true);

UserEntity user = userRepo.findById(userId).orElseThrow();
// this will tell ModelMapper to map newData into user
mapper.map(newData, user);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM