数据操作

在JPA中,保存数据时必须携带实体关系,但是DTO中往往缺少实体关系。因此,在保存数据之前必须先查询数据,然后根据DTO中的数据进行增量的更新。

FooService.java
package com.example.demo.service;

import com.example.demo.*;
import com.taocares.commons.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
public class FooService {

    @Autowired
    private FooRepository fooRepository;
    
    public Optional<FooDto> findById(Long fooId) {
        Optional<Foo> foo = fooRepository.findById(fooId);
        if (foo.isPresent()) {
            return Optional.of(BeanUtils.copyProperties(foo.get(), FooDto.class));
        } else {
            return Optional.empty();
        }
    }
    
    public void save(FooDto fooDto) {
        if (fooDto.getId() != null) { // 修改
            Foo foo = fooRepository.getOne(fooDto.getId());
            BeanUtils.copyProperties(fooDto, foo);
            fooRepository.save(foo);
        } else { // 新增
            Foo foo = BeanUtils.copyProperties(fooDto, Foo.class);
            fooRepository.save(foo);
        }
    }
}

Last updated