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);
}
}
}
JpaRepository
提供了两种查询单条数据的方法:
findById
:返回Optional
对象,推荐在查询方法中使用。
getOne
:返回实体,懒加载的模式,如果数据不存在会直接抛出EntityNotFoundException
,推荐在数据修改时使用。