Optional是什么?
空指针异Optional常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。 具你的可参考:JDK8新特性之Optional
Mapper的正常写法
Mybatis时代码是这样写的:
@Mapper
public interface FooMapper {
@Select("select * from FOO where id = #{id}")
Optional<Foo> selectById(Long id);
}
调用方式:
public class FooController {
@Autowired
private FooMapper fooMapper;
@GetMapping("/{id}")
public FOO findById(@PathVariable Long id) {
FOO foo = this.fooMapper.selectById(id);
if(foo == null) {
// 抛异常,或者做点其他事情
}
}
}
Optional支持后
Mapper的写法
@Mapper
public interface FOOMapper {
@Select("select * from FOO where id = #{id}")
Optional<FOO> selectById(Long id);
}
调用
public class FooController {
@Autowired
private FooMapper fooMapper;
@GetMapping("/{id}")
public Foo findById(@PathVariable Long id) {
return this.fooMapper.selectById(id)
.orElseThrow(() -> new IllegalArgumentException("This Foo does not exit!"));
}
}
从此,再也不需要像以前一样写一大堆代码去判断空指针了。
结束语
欢迎有问题及时交流~ 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多交流