他们的区别也就是:
getOne
返回一个实体的引用,无结果会抛出异常;findById
返回一个Optional
对象;findOne
返回一个Optional
对象,可以实现动态查询;
而Optional
代表一个可能存在也可能不存在的值。Optional 查看
简单使用如下:
第一种:
调用findByid方法,返回实体类的Optional,再调用isPresent进行判断是否不为空,若是就调用get获取对象,然后判断对象是否存在,删除
Optional<Permission> permissions = permissionDao.findById(id);
if (permissions.isPresent()){
Permission permission = permissions.get();
if (permission != null){
permissionDao.delete(permission);
}
}
第二种:
调用findById()方法和orElse(null)方法,获取实体类对象,然后再判断实体类是否为空
Permission permission = permissionDao.findById(id).orElse(null);
if (permission != null){
permissionDao.delete(permission);
}
第三种:
这里使用Lambda表达式进行遍历获取对象,然后判断,删除
permissionDao.findById(id).ifPresent(permission -> {
if (permission != null){
permissionDao.delete(permission);
}
});
使用Optional实际上是写代码严谨的方式,避免出现不必要的错误。