取代update的save
springboot Jpa里面没有update方法,使用save来做更新操作
具体来讲,调用save方法时,若对象存在则更新,若不存在则保存
如何实现更新
如下操作是不能更新的,会保存两条记录
User user = new User("idea","1",new Date(),null);
userService.save(user);
user.setModifiedTime(new Date());
userService.save(user);
正确的更新操作,如下:
//通过从repository查询出来的对象更新,才会成功
public void save(User user){
User user1 = userRepository.findByUsername(user.getUsername());
if ( user1!= null) {
user1.setModifiedTime(new Date());
}else{
user1 = new User();
user1.setUsername(user.getUsername());
user1.setPassword(user.getPassword());
user1.setCreateTime(new Date());
}
userRepository.save(user1);
}
如果使用@Transactional注解,更新时不用调用save方法
@Transactional(rollbackFor = Exception.class)
public void save(User user){
User user1 = userRepository.findByUsername(user.getUsername());
if ( user1!= null) {
user1.setModifiedTime(new Date());
}else{
user1 = new User();
user1.setUsername(user.getUsername());
user1.setPassword(user.getPassword());
user1.setCreateTime(new Date());
userRepository.save(user1);
}
}