@Test
public void testUpdateStudent(){
Optional<Student> student = studentRepository.findById((long) 1);
student.setName();
}
- 当我使用可选时,我没有获得 setName(( 方法,如何更新数据库中的记录。
- 另外,我为什么要使用此可选?
你可以使用getOne()
,如果不愿意接收作为Optional
。
@Test
public void testUpdateStudent(){
Student student = studentRepository.getOne(1L);
student.setName();
studentRepository.saveAndFlush(student)
}
当数据库中不存在记录时,可能会有NullPointerException
的机会。
当我们使用findById(<some_parameter>)
时,Spring Data JPA 返回一个Optional
对象。满足isPresent()
条件后可以得到对象,如下所示:
@Test
public void testUpdateStudent(){
Optional<Student> studentOpt = studentRepository.getOne(1L);
if(studentOpt.isPresent()) {
Student student = studentOpt.get();
student.setName();
studentRepository.saveAndFlush(student)
}
}
当我使用可选时,我没有获得 setName(( 方法,如何更新数据库中的记录。
由于您正在获取可选,因此可以通过以下方式设置值:
@Test
public void testUpdateStudent(){
Optional<Student> student = studentRepository.findById((long) 1);
student.get().setName();
}
Optional.get(( 给出了 Optional 中存在的值 T。
另外,我为什么要使用此可选?
老实说,这实际上取决于您的学生存储库从哪种类型的存储库扩展。你有各种各样的Spring Data Repostories,如CrudRepository,PagingAndSortingRepository等。您可以在浏览此官方文档后达成共识。